iptables:匹配多个 ip 地址

iptables:匹配多个 ip 地址

我正在制定一条 iptables 规则,在我的 shorewall 脚本初始化防火墙后应用。我希望将局域网中的特定 IP 地址 (10.0.1.19) 重定向到 10.0.64.1,除非它是要发送到 paypal。

我有以下规则,并且非常有效:

iptables -t nat -A PREROUTING ! -d 1.2.3.4 -s 10.0.1.19 -j DNAT --to 10.0.64.1

我的问题是,paypal 使用多个 IP 地址,而我不允许拥有多个 IP 地址。

https://ppmts.custhelp.com/cgi-bin/ppdts.cfg/php/enduser/std_adp.php?p_faqid=92

除了这个问题之外,我想知道如何再次删除规则,而不必重新启动shorewall。

亲切的问候

答案1

您可能希望为此使用 HTTP 代理,而不是防火墙。代理可以理解 http,可以看到正在请求 paypal 域,并可以采取适当的措施。例如,privoxy 通常用于更改来自广告网站的图像请求。您可以将不同的 http 代理链接在一起,以结合不同类型的优势,或根据请求类型制作不同反应的“流程图”。

答案2

我认为您可能能够将 iprange 模块用于这样的操作,我之前曾将其用于通用防火墙规则:

iptables -I RH-Firewall-1-INPUT 11 -m iprange --src-range 192.168.254.1-192.168.254.254 -d 172.16.1.207 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

编辑:
呃……我收回我说的话,我觉得你可能想要 --to-source 或 --to-destination 和 NAT。你只需要用连字符将范围括起来,即:--to-source 192.168.1.1-192.168.1.254。请参阅 iptables 手册页的 DNAT 和 SNAT 部分。

答案3

我做了一些研究并想发布结果。

我还发现我可以这样做:

iptables -t nat -A PREROUTING -d 1.2.3.4 -j ACCEPT
iptables -t nat -A PREROUTING -d 6.7.8.9 -j ACCEPT
iptables -t nat -A PREROUTING ! -d 10.0.64.1 -s 10.0.1.19 -j DNAT --to 10.0.64.1

我可以用以下方式列出规则:

iptables -t nat --line-numbers -n -L  PREROUTING

我可以通过以下方式删除规则:

iptables -t nat -D PREROUTING RULENUMBER

希望有人觉得这个有用:)

答案4

无论哪种方式:

1)示意图(不检查语法,所以自己算一下):

iptables -t nat -A PREROUTING -s 10.0.1.19 -j REDIRECT? -m comment --comment "should it be redirected?"

iptables -t nat -A REDIRECT? -d DST_IP1 -j RETURN -m comment --comment "nope"

iptables -t nat -A REDIRECT? -d DST_IP2 -j RETURN -m comment --comment "nope"

iptables -t nat -A REDIRECT? -d DST_IPn -j RETURN -m comment --comment "nope"

iptables -t nat -A REDIRECT? -j DNAT --to 10.0.64.1 -m comment --comment "yep"

2)谷歌搜索ipset

相关内容