公司网络与家庭网络组建局域网使用xl2tp拨号。网络结构网络端内网段路由器内网IP公网IPxl2tp端类型家庭网络A192.168.0.0/24磊科NBR100192.168.0.2有服务端公司网络B192.168.10.0/24磊科B39192.168.10.1无客户端成功建立连接后分配IP如下A服务端B客户端10.0.2.110.0.2.2存在问题B端内网能ping通A端内网IP但A端无法ping通B端内网。由于之前在B端用的是磊科B6路由器组网没有任何问题因此问题定位在B39刚换的设备。连接B39路由器控制台ssh192.168.10.1进去后发现系统是openwrt 21。经过多番查找问题定位在防火墙配置vi/etc/config/firewall... config zone option namewanlist networkwan1list networkwan1_ipv6list networkwan2list networkvpn0# 1. vpn0被加入了wanoption inputREJECToption outputACCEPToption forwardREJECTlist masq_src192.168.10.0/24... config zonevpn0option namevpn0list networkvpn0option inputREJECT# 3. 入站拒绝option outputACCEPToption forwardREJECT# 2. 转发被拒绝option masq1option mtu_fix1注意两处注释vpn0被加入了wan导致从A过来的数据到达vpn0时被拒绝vpn0默认也是拒绝转发从这里可以看出B39的虚拟网络拨号功能并不是为跨域组网设计翻墙倒是可以用但翻墙策略也没地方设置这就有点鸡肋了。修改方案首先将1注释掉再将2改为ACCEPT重启防火墙servicefirewall restart从A内网ping B内网成功但这里需要注意的是直接ping B路由器的内网IP是不通的(ping 192.168.10.1或ping 10.0.2.2因为上面注释的第3条拒绝导致。如果需要能ping通第3条改为’ACCEPT’即可。不过实际应用中这里不需要开启拒绝A网访问B网的路由器设备是合理的。新的问题B内网ping A内网不通了这是由于上面的第1条被删除导致vpn0不在wan口区域内来自B内网的数据包无法转发出去。事实上从B控制台ping A子网IP是通的所以其实加一条路由就能通过。不过这样需要把A子网网段硬编码到路由规则中时间久了如果出问题难以定位。如果恢复第1条又会导致A ping B 不通。这样则需要为vpn0添加一条转发规则config forwarding option srcvpn0option destlan解决方案... config zone option namewanlist networkwan1list networkwan1_ipv6list networkwan2list networkvpn0# 1. 这里保留不要注释option inputREJECToption outputACCEPToption forwardREJECTlist masq_src192.168.10.0/24... config zonevpn0option namevpn0list networkvpn0option inputREJECToption outputACCEPToption forwardACCEPT# 2. 这里改为ACCEPToption masq1option mtu_fix1# 添加一条vpn0转发规则config forwarding option srcvpn0option destlan重启服务后两端内网都能ping通了。遗留问题在B路由器重启后A仍然能ping通B内网但返回过来就不行了。登录B控制台查看/etc/config/firewall配置并未被还原。于是重启防火墙发现又正常了。但总不能每次重启路由器都要进控制台操作一次吧。这个问题有一个折衷方案在B管理页面添加一条静态路由 192.168.0.0/24 走 10.0.2.1这样就正常了。为什么重启防火墙就正常了呢重启路由器后在重启防火墙前后我查看了ip route路由表并无变化这是什么原因。有没有懂的朋友指点下。