在linux ubuntu上configurationiptables只在两个networking之间路由特定的IP

我不是一个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