我有网络 A(远程)和网络 B(本地)。
网络 B 需要能够访问网络 A,但没有人能够访问网络 B。我该如何在路由器中为网络 B 设置 IPTABLES 规则来实现这一点?
答案1
尝试添加入站规则以丢弃子网的流量:
# iptables -A INPUT -s 192.168.100.0/24 -j DROP
答案2
可以使用 来实现这一点iptables
,但您需要注意连接状态。您必须允许来自网络 A 的回复数据包,但不允许它们发起到网络 B 的新连接。
类似这样的事情应该做:
iptables -A FORWARD -i eth_netA -o eth_netB -s 10.1.2.3/24 -d 10.4.5.6/24 -m state --state=established,related -j ACCEPT
# if your default policy is ALLOW:
iptables -A FORWARD -i eth_netA -o eth_netB -s 10.1.2.3/24 -d 10.4.5.6/24 -j DROP
# if your default policy is DROP:
iptables -A FORWARD -i eth_netB -o eth_netA -s 10.4.5.6/24 -d 10.1.2.3/24 -j ACCEPT
请注意,我们在这里使用的是FORWARD
表格,而不是INPUT
。这是因为您的机器正在网络之间路由数据包,并且您想要捕获未发往路由器本身的数据包。如果您只想将这些规则应用于通过这两个接口转发的所有流量,则可以省略-s
and语句。-d
请注意,这依赖于 iptables 的连接跟踪功能(如果你有任何-t nat
规则,它已经加载),你可能需要做一些调优ip_conntrack
如果您来回发送大量数据包,则参数很重要。最常见的警告信号是系统table full, dropping packet
日志中的消息。