首先,我描述一下我的局域网组织。我有 2 个网络(方案http://take.ms/s3CSy):
- 192.168.0.0 / 255.255.255.0,路由器 ASUS RT-N65U 内部 IP 为 192.168.0.1,无 NAT 的静态外部 IP:1.2.3.4。路由器运行 VPN PPTP 服务器,VPN LAN IP 范围为 172.16.0.0/255.255.255.0,VPN 服务器 IP 为 172.16.0.1,MTU/MRU 为 1300。我的笔记本电脑(笔记本电脑 #1)现在位于此网络中。
- 192.168.2.0 / 255.255.255.0,路由器 ZyXEL Keenetic 4G 内部 IP 为 192.168.2.1,带 NAT 的动态外部 IP:10.0.0.1。所有客户端都连接到交换机 Cisco sg200-26p。
在第二个 LAN 中,我有一个安装了 Debian Linux 和 PPTP VPN 客户端的 Web 服务器。PPTP 客户端连接到第一个 LAN 中的路由器并获取 IP 172.16.0.11。连接 pptp 客户端后立即添加两条路由:
ip route add 172.16.0.0/24 dev ppp0
ip route add 192.168.0.0/24 dev ppp0
VPN 客户端(Web 服务器)上的路由表如下:
root@system:~# ip route
default via 192.168.2.1 dev eth0
1.2.3.4 via 192.168.2.1 dev eth0 src 192.168.2.3
172.16.0.0/24 dev ppp0 scope link
172.16.0.1 dev ppp0 proto kernel scope link src 172.16.0.11
192.168.0.0/24 dev ppp0 scope link
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.3
在网络服务器上“iptables -L -v -n”显示空表。
VPN 服务器上的路由表(ASUS RT-N65U 路由器):
/home/root # ip route
default via 2.3.4.5 dev ppp0
2.3.4.5 dev ppp0 proto kernel scope link src 1.2.3.4
127.0.0.0/8 dev lo scope link
172.16.0.12 dev ppp10 proto kernel scope link src 172.16.0.1
192.168.0.0/24 dev br0 proto kernel scope link src 192.168.0.1
192.168.2.0/24 dev ppp10 scope link
在路由器 ASUS RT-N65U 上,我也激活了 DynDNS、域名 home.example.com;和 2 个端口转发设置:
1. Synology NAS web remote access: Remote port 6667, local IP: 192.168.0.2, local port 5000, Protocol BOTH (TCP & UDP)
2. Web server remote access: Remote port 6668, local IP: 192.168.2.3, local port 80, Protocol BOTH (TCP & UDP)
当我尝试从第一个 LAN 中的笔记本电脑访问 Web 服务器(URL http_//192.168.2.3:80)时 - 没有问题,一切运行正常。
但如果我尝试从另一台笔记本电脑(方案中的笔记本电脑 #2)访问 Web 服务器(URL http_//1.2.3.4:6668) - 找不到页面。如果我尝试访问 Synology - 没问题。
我在 Web 服务器上安装了 tcpdump 并捕获了数据包:
- 从第一个局域网中的笔记本电脑访问,一切似乎都很好。PCAP 文件 https_//www.dropbox.com/s/pvg5rd4rw5omz9z/fromlan.pcap?dl=0(将 _ 替换为 :)
- 从远程主机访问。我发现我的 Web 服务器收到了 SYN 数据包,但没有将 ACK 数据包发送回客户端。PCAP 文件 https_//www.dropbox.com/s/hxfxudtrre12i7s/fromremote.pcap?dl=0(将 _ 替换为 :)
在安装了 iptstate 的 Web 服务器上,显示来自远程服务器的连接:
Source Destination Prt State TTL
199.58.86.207:58540 192.168.2.3:80 tcp SYN_RECV 0:00:59
哪里有问题?
也许这是路由问题,来自远程服务器的数据包通过 VPN 连接路由传来,但默认通过 192.168.2.1) 路由传出?
答案1
问题出在网络服务器上的一条路由上:
为了测试,通过 ppp0 接口添加到 199.58.86.0/24 的路由,页面成功打开。