使主机可在 LAN 子网之间访问

使主机可在 LAN 子网之间访问

我的路由器上有两个接口,使用 Tomato 固件:br0 和 vlan4。br0 位于 192.168.0.0/16 子网,vlan4 位于 10.0.1.0/24 子网。由于我不希望 br0 上的不同网络服务在 vlan4 上可用,因此我添加了此防火墙规则:

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 是我的 WAN(互联网访问)。

我想要解决的问题是,我想让 192.168.0.0/16 网络 (br0) 中的一台主机(其 IP 为 192.168.0.50)在 vlan4 (10.0.1.0/24) 上可用。只有该主机应在 vlan4 上可用(br0 上的所有其他主机都应不可访问)。可以使用哪些防火墙规则来实现此目的?

编辑1:

输出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

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

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

答案1

iptables -I 转发 -i vlan4 -d 192.168.0.50 -j 接受

将其放在原始问题的最后一条规则之前。

我假设你也做过类似的事情:

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

在您的系统上启用转发功能。

答案2

您需要做的就是添加

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

在你列出的第三条规则之前(删除)

答案3

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

相关内容