我build立了一个networking:

192.168.87.0/24中的计算机的适当端口在TP-LINK router上被转发以被“全世界”看到。
在OpenVPN server上启用IP转发。
我可以从办公室从OpenVPN server连接到OfficeA中的OpenVPN server 。 server和server互相看到 – 他们回应ping(在192.168.87.0/24和10.8.0.0/24networking),发送数据,创build连接(即SSH)。
TP-LINK router上的路由表( abcd是WAN IP):
DST MASK GATEWAY IFACE abcd 255.255.255.255 0.0.0.0 WAN 192.168.87.0 255.255.255.0 0.0.0.0 LAN & WLAN 10.8.0.0 255.255.255.0 192.168.87.2 LAN & WLAN (route added by hand) 239.0.0.0 255.0.0.0 0.0.0.0 LAN & WLAN 0.0.0.0 0.0.0.0 abcd WAN
而现在…从192.168.87.0/24任何一台电脑,我可以ping通10.8.0.6 。 不幸的是, 10.8.0.6只能ping 10.8.0.6 。
但是… 10.8.0.6将开始ping计算机在87.0/24 (例如87.104 )只有当我从这台计算机ping到10.8.0.6 :
10.8.0.6 ping 192.168.87.104 – 失败,超出时间。 192.168.87.104 ping 10.8.0.6 – ok。 10.8.0.6 ping 192.168.87.104 – 确定。 我已经与tcpdump检查, 192.168.87.104总是得到请求从10.8.0.6 ping发送答复。 但答复似乎不通过网关TP-LINK router返回到10.8.0.6 – 我无法看到他们与两个接口上的OpenVPN server上的tcpdump 。
我也检查过,如果我在192.168.87.104上添加路由:
(1) route add 10.8.0.0 netmask 255.255.255.0 gw 192.168.87.2
那么10.8.0.6总会得到一个ping回复,即使我之前没有从192.168.87.104 ping过它。
另一件事,我发现:从192.168.87.104 ping到10.8.0.6添加到路由caching( route -C )的条目(1) 。 在“第一次ping”(在添加条目之前),我得到:
PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data. 64 bytes from 10.8.0.6: icmp_req=1 ttl=127 time=37.0 ms From 192.168.87.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.87.2) 64 bytes from 10.8.0.6: icmp_req=2 ttl=127 time=93.0 ms
我读过,这是一个正常的行为,因为到10.8.0.0的网关是在同一个网段。 在icmp redirect host之后,在路由caching中创build一个新条目。
Webconfiguration面板中的TP-LINK router具有checkboxSPI Firewall - Stateful Packet Inspection 。 禁用它并不能解决问题。
我不明白为什么ping回复192.168.87.104 > 10.8.0.6不通过TP-LINK router尽pipeTP-LINK router知道到10.8.0.0的路由并且从192.168.87.104到10.8.0.6 ping请求确实通过了。
所以我的问题是:是什么原因? 有什么我可以做的,以解决这种情况(除了在OfficeA中的每台计算机上添加路由(1) …)? 我个人认为TP-LINK router存在问题。
OpenVPN serverconfiguration文件:
port 1194 proto udp dev tun ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh1024.pem server 10.8.0.0 255.255.255.0 push "route 192.168.87.0 255.255.255.0" client-to-client keepalive 10 120 comp-lzo persist-key persist-tun
我的猜测是,由于有状态的防火墙规则,TP-LINK最初将ping答复从.87.104丢弃到.87.104 。 请注意,当.87.104 pings .87.104 ,TP-LINK路由器不会看到ping请求数据包。 从有状态防火墙的angular度来看,如果ping响应从来没有看到原来的ping请求正向相反的方向,那么丢弃ping应答是完全合理的。 后来, .87.104发送了一些ping请求到.87.104之后,防火墙可以允许从.84.104到.84.104 ping回复,因为最近看见.87.104发起了和.87.104通信。
有可能修改TP-LINK的防火墙规则。 但由于它是一个“预算”品牌的路由器,我怀疑你的select将被限制为像“状态防火墙开/关”checkbox。 或者你甚至可能不知道。
一个可能的解决scheme是在Debian OpenVPN服务器上添加第二个NIC,并使其成为Office A的Internet网关路由器。 这样,Office A客户端上的默认网关路由也适用于10.8通信量,并且不必为所有客户端的路由表添加额外的条目。 作为一个额外的好处,你将有机会使用iptables来定制你的防火墙规则,以满足你的心愿。