|
本帖最后由 hkal 于 2013-9-9 00:16 编辑
来自:http://www.linksysinfo.org/index.php?threads/country-block-allow-with-iptables.35548/
Geoip 的数据库:
我们要先生成数据库( geoipdb.bin 和 geoipdb.idx)。例如在 Debian 的电脑上:- # 如果 debian 还没有安装需要的工具:
- apt-get update
- apt-get install build-essential zip
复制代码 开始生成 geoipdb.bin 和 geoipdb.idx:- mkdir -p /usr/src/geoip
- cd /usr/src/geoip
- wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
- unzip GeoIPCountryCSV.zip
- wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
- tar zxvf csv2bin-20041103.tar.gz
- cd /usr/src/geoip/csv2bin
- ./csv2bin ../GeoIPCountryWhois.csv
复制代码 【下面附件是今天的 geoipdb.bin 和 geoipdb.idx,直接用这个就不用自己生产了。不过时间久了这些 IP 可能会有变化,所有最好还是自己每几个月下载 GeoIPCountryCSV.zip 生成一次。 】
安装到路由:
我们现在把 debian 电脑 /usr/src/geoip/csv2bin 里面的 geoipdb.bin 和 geoipdb.idx 拷贝出来,拷贝到路由的 /opt/etc/geoip/ 目录内(或者其他目录,不过下面的脚步就要相应地修改)。
在路由的 WanUp 脚本 (当WAN联机)加上:- [ ! -d /var/geoip ]&&(mkdir /var/geoip;cp /opt/etc/geoip/geoipdb.* /var/geoip;modprobe xt_geoip;service firewall restart)
复制代码 重启路由或者手动执行上面脚本一次。
应用:
原文中的例子:- iptables -I wanin -p tcp -d 192.168.1.99 --dport 80 -m geoip ! --src-cc JP,US -j DROP
复制代码 除了来自 JP 和 US 的,不容许访问 port 80。
我的应用:- /usr/sbin/iptables -t nat -A PREROUTING ! -d 192.168.0.0/16 -p tcp --dport 80 -m geoip --dst-cc CN -j DNAT --to-destination 192.168.11.1:3128
复制代码 当我不在 CN 的时候,要访问 CN 的网站,自动通过路由上面的 squid。浏览器,手机等不需要任何设定。(xx音乐,xx视频 不会出现类似 “你所在的地区不支持” 等情况)。
其他应用:自己发挥想象。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|