我不是 Linux 专家,但我需要设置这个场景。
我有一台 Hyper-V 主机,其中有两个虚拟网络接口,它们都添加到 Linux ubuntu 机器,eth0 和 eth1。
现在我在网络 eth1 上有一堆 Windows 机器,我已将它们配置为使用 ubuntu 机器作为网关。现在我想让内部网络上的 Windows 机器仅访问 eth0 上的几台机器。
这是我设置的基本配置
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 中的所有机器。
我现在需要的是阻止 eth1 流量到 eth0,除了两个 IP(域控制器),而 eth0 中的所有机器都可以访问 eth1 中的机器,这对我来说是件好事。
我应该对 iptables 做什么配置来阻止从 eth1 到 eth0 的所有流量(除了一堆 IP)?
谢谢。
[编辑] 我已经设法使它使用此配置工作,它似乎运行良好,但如果它是错误的或者有更好的解决方案,我希望得到一些评论。
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
答案1
您可以使用参数“-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