![IPTables - 根据国家/地区重定向流量](https://linux22.com/image/1493745/IPTables%20-%20%E6%A0%B9%E6%8D%AE%E5%9B%BD%E5%AE%B6%2F%E5%9C%B0%E5%8C%BA%E9%87%8D%E5%AE%9A%E5%90%91%E6%B5%81%E9%87%8F.png)
有没有什么方法可以仅允许来自指定国家/地区的指定端口上的 TCP 流量,而其余流量使用 iptables 重定向到另一个 IP /端口?
答案1
您需要设置并更新 geoip 数据库才能使其正常工作。
iptables -I INPUT -m geoip -p tcp --dport ### --src-cc CN -j ACCEPT
iptables -A PREROUTING -m geoip -p tcp --dport ### --src-cc ! CN -j DNAT --to-destination 1.1.1.1:333
将 1.1.1.1 替换为您的 IP,将 333 替换为您想要的任何端口。
以下教程可以帮助您: http://xmodulo.com/block-network-traffic-by-country-linux.html 显然这个链接已经失效了,所以我添加了一个用于互联网档案。
您需要定期更新数据库,因为有时 IP 地址会更改所有者和国家。
答案2
正确的语法是:
iptables -I INPUT -m geoip -p tcp --dport xxx --src-cc CN -j ACCEPT
iptables -A PREROUTING -p tcp --dport xxx --src-cc ! CZ,SK -j DNAT --to-destination 1.1.1.1:333
但你的答案是正确的。