网络配置

网络配置

网络配置

我已经建立了一个网络:

网络图

计算机的适当端口192.168.87.0/24被转发TP-LINK router以便“全世界”都能看到。

已启用 IP 转发OpenVPN server

我能够从 OfficeB 连接client1OpenVPN serverOfficeA,client1并且server互相看到对方 - 他们回复 ping(内部192.168.87.0/2410.8.0.0/24网络)、发送数据、创建连接(即 ssh)。

路由表TP-LINK router(a.b.c.d是 WAN IP):

DST             MASK                GATEWAY         IFACE
a.b.c.d         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             a.b.c.d         WAN

问题

现在...192.168.87.0/24我可以从 中的任何计算机 ping 10.8.0.6。不幸的是,只能10.8.0.6ping 87.187.2

但是...仅当我首先从这台计算机 ping 到以下计算机时,10.8.0.6才会开始 ping 计算机87.0/24(例如) :87.10410.8.0.6

  1. 10.8.0.6ping 192.168.87.104——失败,超出时间。
  2. 192.168.87.104ping 10.8.0.6- 好的。
  3. 10.8.0.6ping 192.168.87.104- 好的。

我检查过的内容

我已检查过tcpdump,确实192.168.87.104总是会收到来自的 ping 请求并发送回复10.8.0.6。但回复似乎没有通过网关传回TP-LINK router——我无法在两个接口上10.8.0.6看到它们。tcpdumpOpenVPN server

我还检查过,如果我添加了一条路线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 回复,即使我之前没有 ping 过它192.168.87.104

我还发现了另一件事:从 到 执行 ping 操作192.168.87.10410.8.0.6向路由缓存 ( 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在路由缓存中创建了一个新条目。

在 Web 配置面板TP-LINK router中,有一个复选框SPI Firewall - Stateful Packet Inspection。禁用它并不能解决问题。

我的问题

我不明白为什么尽管知道到的路由并且到的ping 请求确实192.168.87.104 > 10.8.0.6通过了,但 ping 回复却没有通过。TP-LINK routerTP-LINK router10.8.0.0192.168.87.10410.8.0.6

所以我的问题是:原因是什么?我能做些什么来解决这种情况吗(除了在 OfficeA 中的每台计算机上添加路由(1)...)?我个人认为问题出在TP-LINK router


OpenVPN server配置文件:

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

答案1

我的猜测是,TP-LINK 最初会因为状态防火墙规则而丢弃从.87.104到 的ping 回复。请注意,当ping时,TP-LINK 路由器永远不会看到 ping 请求数据包。从状态防火墙的角度来看,如果它从未看到原始 ping 请求朝相反方向发送,则丢弃 ping 回复是完全合理的。稍后,在向发送了一些 ping 请求后,防火墙可以允许从到 的ping 回复,因为它最近看到发起了与 的通信。.0.6.0.6.87.104.87.104.0.6.84.104.0.6.87.104.0.6

也许可以修改 TP-LINK 的防火墙规则。但由于它是一款“廉价”品牌路由器,我怀疑您的选项将仅限于“状态防火墙开启/关闭”复选框之类的选项。或者您甚至可能没有这个选项。

一种可能的解决方案是向 Debian OpenVPN 服务器添加第二个 NIC,并将其设为办公室 A 的互联网网关路由器。这样,办公室 A 客户端上的默认网关路由也将适用于10.8流量,您无需在所有客户端的路由表中添加额外的条目。另外,您将有机会iptables根据自己的意愿定制防火墙规则。

相关内容