我不是一个Linux专家,我需要设置这种情况。
我有一个Hyper-V主机,我有两个虚拟networking接口,他们都被添加到Linux的Ubuntu的机器,eth0和eth1。
现在我在networkingeth1上有一堆Windows机器,我已经configuration它们使用ubuntu机器作为网关。 现在我想让内部networking上的Windows机器只能访问eth0上的几台机器 。
这是我设置的基本configuration
echo 1 > /proc/sys/net/ipv4/ip_forward sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
现在,eth1中的所有机器都可以访问eth0中的所有机器,而eth0中的所有机器都可以访问eth1中的所有机器。
我现在需要的是阻塞到eth0的eth1stream量,除了两个IP(域控制器),而对于我来说,eth0中的所有机器都可以访问eth1中的机器。
我应该做些什么iptables来阻止从eth1到eth0的所有stream量,除了一堆IP地址?
谢谢。
[编辑]我已经设法使用这个configuration,它似乎运作良好,但如果它是错误的,或者如果有更好的解决scheme,我想要一些评论。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT sudo iptables -I FORWARD -d 10.0.0.0/24 -j DROP sudo iptables -I FORWARD -d 10.0.0.42 -j ACCEPT
您可以使用参数“-s”指定源IP地址或子网,然后删除eth1到eth0的所有通信
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -s 192.168.1.1 -i eth1 -o eth0 -j ACCEPT sudo iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -o eth0 -j ACCEPT sudo iptables -A FORWARD -i eth1 -o eth0 -j DROP