我有一个网关机器连接到多个内部networking,我想build立NAT。 但是,这些networking需要彼此隔离,这是我无法想象的。 这是我的configuration:
eth0:192.168.1.0/28(上行),网关分配为192.168.1.1
eth1:192.168.1.16/28(下游1),网关分配为192.168.1.16
eth2:192.168.1.32/28(下行2),网关分配为192.168.1.32
到目前为止,我已经configuration了iptables来允许默认链:
iptables -P INPUT ALLOW iptables -P OUTPUT ALLOW iptables -P FORWARD ALLOW
然后,我在内核中启用了IP转发,并设置了iptables:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.1 iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
但是,这种configuration允许eth1上的一台机器访问eth2上的另一台机器,即使我没有明确指定一个允许这样做的规则。 我如何隔离这些networking,或者至多只允许访问某些主机/端口?
您将FORWARD链的策略设置为ALLOW ,因此即使链中没有任何内容匹配,stream量也将被允许。
你可能应该把它设置为DROP 。
正如在对汉普顿(M. Hampton)的回应中指出的那样,你必须保持NAT的转发function。
作为一个快速入侵,我会尝试阻止内部子网之间的转发,例如。 添加这些命令给你:
iptables -A FORWARD -i eth1 -o eth2 -j DENY iptables -A FORWARD -i eth2 -o eth1 -j DENY
这将是3个内部子网的混乱,因为你将有6个阻塞规则,并相当可怕的4 :)。