用着没人权的移动宽带,最近晚上玩DOTA 2的时候总是莫名其妙掉线(超售太多了,浙江省出口的BGP都掉了吧),于是想着搞个阿里云做策略路由好了,因此需要一个中国电信的IP列表。想了想,Hurricane Electric BGP Toolkit可以提供这个信息,但是不允许自动抓取。于是写了个脚本来做转换。
首先我们来搜索一下CHINANET:
等页面加载完(要很久,数量巨大),然后在页面后半部分可以看到几万条IP段。接下来要做的事情就是把它们读出来导入RouterOS。于是写一个简单的Bash脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash # https://gist.github.com/Jamesits/944ab9a484ad34522f6c4bce8d085132 # Captures every IP-CIDR notation in HTML file # then convert it to RouterOS IP List format # Usage: convert.sh source-file.html List-Name # Then use /import file-name=List-Name.scr to # import this list on RouterOS # You can save bgp.he.net search result as HTML # then use this script to convert. set -eu if [ "$#" -ne 2 ] || ! [ -f "$1" ]; then echo "Usage: $0 source-file.html List-Name" >&2 exit 1 fi cat > $2.scr <<EOF /ip firewall address-list remove [/ip firewall address-list find list=$2] EOF egrep -oe "(\d{2,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,3})" "$1" | sed "s/^/add address=/g" | sed "s/\$/ list=$2/g" | awk '!a[$0]++' >> $2.scr |
先把搜索结果页面Ctrl/Cmd+S保存一下,然后运行 ./convert.sh saved_webpage.html CHINANET 获得一个 CHINANET.scr 文件,上传到RouterOS,然后在RouterOS终端运行
1 |
/import file-name=CHINANET.scr |
大功告成。