把Hurricane Electric BGP Toolkit搜索结果转换成RouterOS防火墙IP列表

用着没人权的移动宽带,最近晚上玩DOTA 2的时候总是莫名其妙掉线(超售太多了,浙江省出口的BGP都掉了吧),于是想着搞个阿里云做策略路由好了,因此需要一个中国电信的IP列表。想了想,Hurricane Electric BGP Toolkit可以提供这个信息,但是不允许自动抓取。于是写了个脚本来做转换。

首先我们来搜索一下CHINANET:

bgp.he.net search result page

等页面加载完(要很久,数量巨大),然后在页面后半部分可以看到几万条IP段。接下来要做的事情就是把它们读出来导入RouterOS。于是写一个简单的Bash脚本:

#!/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终端运行

/import file-name=CHINANET.scr

大功告成。

2 thoughts on “把Hurricane Electric BGP Toolkit搜索结果转换成RouterOS防火墙IP列表

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据