使主机可以在局域网子网之间访问

我的路由器上有两个inerfaces,分别是brw和vlan4。 br0位于192.168.0.0/16子网和10.0.1.0/24子网上的vlan4。 因为我不想在vlan4上使用br0上的不同networking服务,所以我添加了这个防火墙规则:

iptables -I INPUT -i vlan4 -j ACCEPT; iptables -I FORWARD -i vlan4 -o vlan2 -m state --state NEW -j ACCEPT; iptables -I FORWARD -i br0 -o vlan4 -j DROP; 

vlan2是我的广域网(互联网接入)。

我想解决的问题是,我想要从192.168.0.0/16networking(br0),其中ip 192.168.0.50,在vlan4(10.0.1.0/24)上提供一台主机。 只有该主机应该在vlan4上可用(并且br0上的所有其他主机应该是不可访问的)。 什么防火墙规则可以用来做到这一点?

编辑1:

iptables -nvL FORWARD输出iptables -nvL FORWARD

 Chain FORWARD (policy DROP 4 packets, 204 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- vlan4 192.168.0.50 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- vlan4 ppp0 0.0.0.0/0 0.0.0.0/0 state NEW 229 13483 ACCEPT all -- vlan4 vlan2 0.0.0.0/0 0.0.0.0/0 state NEW 0 0 DROP all -- br0 vlan3 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- vlan3 ppp0 0.0.0.0/0 0.0.0.0/0 state NEW 67 3405 ACCEPT all -- vlan3 vlan2 0.0.0.0/0 0.0.0.0/0 state NEW 0 0 ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0 34 1360 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID 758 40580 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU 11781 2111K restrict all -- * vlan2 0.0.0.0/0 0.0.0.0/0 26837 19M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 287 15927 wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0 283 15723 ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0 0 0 upnp all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 

iptables -t nat -nvL PREROUTING输出iptables -t nat -nvL PREROUTING

 Chain PREROUTING (policy ACCEPT 6887 packets, 526K bytes) pkts bytes target prot opt in out source destination 855 83626 WANPREROUTING all -- * * 0.0.0.0/0 222.228.137.210 0 0 DROP all -- vlan2 * 0.0.0.0/0 192.168.0.0/16 0 0 DNAT udp -- * * 192.168.0.0/16 !192.168.0.0/16 udp dpt:53 to:192.168.0.1 

ip route show的输出ip route show

 222.228.137.209 dev vlan2 scope link 222.228.137.208/29 dev vlan2 proto kernel scope link src 222.228.137.210 10.0.0.0/24 dev vlan3 proto kernel scope link src 10.0.0.1 10.0.1.0/24 dev vlan4 proto kernel scope link src 10.0.1.1 192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.252 192.168.0.0/16 dev br0 proto kernel scope link src 192.168.0.1 127.0.0.0/8 dev lo scope link default via 222.228.137.209 dev vlan2 

iptables -I FORWARD -i vlan4 -d 192.168.0.50 -j ACCEPT

把它放在原来问题的最后一条规则之前。

我假设你也做了这样的事情:

echo 1> / proc / sys / net / ipv4 / ip_forward

通常在您的系统上启用转发。

所有你需要做的是添加

 iptables -I FORWARD -s 192.168.0.50 -o vlan4 -j ACCEPT 

在你列出的第三条规则之前

iptables -I FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT