如果地址被分组在一个或几个连续的子网中 [例如几个 /24s] - 我将创建简单的预路由规则,将端口 80 上的所有流量从它们 DNAT 到侦听端口 81 的某些内容 [例如来自 nginx 的 vhost] 将只提供服务错误页面:
iptables -t nat -A PREROUTING -p tcp -s 194.88.0.0/16 --dport 80 -j REDIRECT --to 81
Run Code Online (Sandbox Code Playgroud)
如果这是散布在“周围”的 8-10k 唯一 ips ......那会很有趣;-] - 我仍然会使用上述场景,但为了匹配,我会使用ipset。像这样:
ipset --create ban iphash
ipset --add ban 80.1.2.3
ipset --add ban 90.4.5.6
ipset --add ban 153.17.18.19
# ....
iptables -t nat -A PREROUTING -p tcp -m set --set ban src --dport 80 -j REDIRECT --to 81
Run Code Online (Sandbox Code Playgroud)