我有一台配置为网关路由器的 ubuntu 服务器,其中有 eth0(连接到 dsl 路由器的分机)和 eth1(内部网络)
我已启用源 NAT,以便与所有内部主机共享外部 IP,而且 ubuntu 服务器仅通过 DHCP 为 eth1 上的客户端提供连接)
在 ubuntu 机器上构建 iptables 防火墙时,如果我尝试指定子网(例如内部 192.168.2.0)或接口(eth1),则所有流量似乎都会跳转到默认的 FORWARD 策略(DROP)。如果我省略任何参数(例如iptables -A FORWARD -p icmp -j ACCEPT
),则该协议将正常工作并可以毫无问题地遍历接口。
该问题也适用于 INPUT 链,因此如果我尝试从 192.168.2.0/24 指定 ICMP ACCEPT,它将超时,但如果我只是指定接受 ICMP,那么我就可以 ping eth1)
我在下面附上了转发规则...我花了很多时间试图理解这个问题,但无济于事。有人能告诉我我在这里犯了什么根本错误吗?)
-A FORWARD -p tcp -j ACCEPT -m comment --comment "all tcp from internal"
-A FORWARD -p udp -j ACCEPT -m comment --comment "all udp from internal"
-A FORWARD -i eth1 -p icmp -j ACCEPT
(以上不起作用)
-A FORWARD -p icmp -j ACCEPT
(仅指定协议,并且有效)
-A FORWARD -p icmp -j REJECT
-P FORWARD DROP