openvpn 跨网段组网问题

2023-11-22 20:53:25 +08:00
 findwho

目前想要实现 192.168.2.200 这台电脑能够访问 192.168.10.2 这台设备。 openvpn 服务器已经搭好,客户机也能正常连接,目前就是 192.168.2.200 无法访问 192.168.10.2 , 在服务器上也无法 ping 通 192.168.10.2 尝试增加路由表 route add -net 192.168.10.0 netmask 255.255.255.0 gw 10.8.0.2 也不起作用。 改用 pptp 倒是成功了,不过 1 小时不到就封了端口。 麻烦各位大佬指点一二,成功了请第一个提供正确指导的喝杯咖啡,略表心意。

服务器配置如下: (尝试 push route ,不成功,openvpn 官网的教程也看了一些,不是特别理解) local server

port 1194

proto udp

dev tun

ca ca.crt

cert server.crt

key server.key

dh dh.pem

auth SHA256

tls-crypt tc.key

topology subnet

server 10.8.0.0 255.255.255.0

push "block-ipv6"

push "ifconfig-ipv6 fddd:1194:1194:1194::2/64 fddd:1194:1194:1194::1"

ifconfig-pool-persist ipp.txt

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4" push "block-outside-dns"

#push "route 192.168.2.0 255.255.255.0"

keepalive 10 120

cipher AES-128-GCM

user nobody

group nogroup

persist-key

persist-tun

verb 3

crl-verify crl.pem

explicit-exit-notify

client-to-client

#client-config-dir /etc/openvpn/ccd

#route 192.168.2.0 255.255.255.0

2021 次点击
所在节点    宽带症候群
32 条回复
ochatokori
2023-11-23 11:09:21 +08:00
@findwho 服务器想要 ping 通 192.168.10.0 段就要在服务器上添加到 192.168.10.0 段的路由,网关为 10.8.0.2

思路就是 openvpn 客户端想要 ping 通另外的客户端的段,就要在自身添加到目标段网关为另外客户端的 openvpn 地址,openvpn 客户端下面的设备不用管
findwho
2023-11-23 12:06:07 +08:00
@blackeeper
我的系统是 win11,这些奇怪路由不是我加的。我加的都是经过 10.8.0.0 这个网关的。
0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.210 281
10.8.0.0 255.255.255.0 在链路上 10.8.0.3 257
10.8.0.3 255.255.255.255 在链路上 10.8.0.3 257
10.8.0.255 255.255.255.255 在链路上 10.8.0.3 257
XX.XX.XX.XX 255.255.255.255 192.168.2.1 192.168.2.210 281
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
128.0.0.0 128.0.0.0 10.8.0.1 10.8.0.3 257
169.254.0.0 255.255.0.0 在链路上 169.254.214.184 291
169.254.214.184 255.255.255.255 在链路上 169.254.214.184 291
169.254.255.255 255.255.255.255 在链路上 169.254.214.184 291
192.168.2.0 255.255.255.0 在链路上 192.168.2.210 281
192.168.2.210 255.255.255.255 在链路上 192.168.2.210 281
192.168.2.255 255.255.255.255 在链路上 192.168.2.210 281
192.168.10.0 255.255.255.0 10.8.0.2 10.8.0.3 2
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
224.0.0.0 240.0.0.0 在链路上 169.254.214.184 291
224.0.0.0 240.0.0.0 在链路上 10.8.0.3 257
224.0.0.0 240.0.0.0 在链路上 192.168.2.210 281
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
255.255.255.255 255.255.255.255 在链路上 169.254.214.184 291
255.255.255.255 255.255.255.255 在链路上 10.8.0.3 257
255.255.255.255 255.255.255.255 在链路上 192.168.2.210 281
===========================================================================
永久路由:
网络地址 网络掩码 网关地址 跃点数
0.0.0.0 0.0.0.0 192.168.2.1 默认
192.168.10.0 255.255.255.0 10.8.0.2 1
========================================================================这个是最新的路由。有 2 个 192.168.10.0 是因为
执行 route add -p 192.168.10.0 mask 255.255.255.0 10.8.0.2 后会出现两个。
findwho
2023-11-23 12:07:42 +08:00
@ochatokori 192.168.10.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 服务器有这条路由,是你说的意思嘛?
我尝试把 tun0 换为 eth0 不成功。
findwho
2023-11-23 12:13:19 +08:00
@blackeeper 大佬,我想了解一下,是不是按道理先要在服务器上 ping 通 192.168.10.0 这个网段。现在服务器都 ping 不通,是不是可能路由器那边的问题??
blackeeper
2023-11-23 12:56:24 +08:00
@findwho 是的,有可能是路由器那个禁止了 ping ,你可以在 openVPN 服务器上 ping 192.168.10.2
findwho
2023-11-23 13:03:07 +08:00
@blackeeper 服务器 ping 不通的。路由器应该没有禁用,昨天我用 pptp vpn 测试是成功的。从 192.168.2.200 这个电脑可以正常访问 192.168.10.2,能 ping 通,能访问。只是 pptp 昨天被封端口了。
我感觉路由器是有点问题,因为连接 vpn 后,不推路由还好,一推就 wlan ,lan 都没法访问 192.168.10.1.也 ping 不同。

之前这个设置也是
push "redirect-gateway def1 ipv6 bypass-dhcp"
服务器只要用这个设置,连接路由器就没法上网。所以服务器把这个禁掉了。
findwho
2023-11-23 13:09:35 +08:00
我还怀疑过路由器这部分设置有问题。不过昨天都正常的。
![26d7f5cc3e41f7fb87e60f6dabb8c6bf.jpeg]( https://i.mji.rip/2023/11/23/26d7f5cc3e41f7fb87e60f6dabb8c6bf.jpeg)
里面的端口 tuno,tun1 不知道啥意思,( tun0 有点像 openvpn 生成的端口)
cdlnls
2023-11-23 13:55:33 +08:00
假如现在 server 的配置文件里面有:route 192.168.10.0 255.255.255.0 和 route 192.168.2.0 255.255.255.0
在没有其他的情况下,这两个配置会在 openvpn 服务器上添加两个路由指向 openvpn 的虚拟网关(不会有任何作用,因为 openvpn 不知道下一跳在哪里)

只有当你给 192.168.2.200 这个客户端推送了 iroute 192.168.10.0 255.255.255.0 之后,这里相当于告诉 openvpn 服务器,这个客户端拥有这个网段 192.168.10.0 ,所以只有有了这个配置之后,openvpn 服务端才会把到达网关的数据包发送给这个客户端。

所以,如果你要达到你的目的,路由器上必须要有 iroute 这个配置,也就是:iroute 192.168.10.0 255.255.255.0 ,它会告诉 openvpn 服务器,它这里有 192.168.10.0 这个网段。

你可以这样 debug 。

1. 首先,在 openvpn 服务器上 ping 一下 10.8.0.2 ,这个肯定是能通的。
2. 再在 openvpn 服务器上 ping192.168.10.1 ,这个如果不通,在 openvpn 服务器上抓包,只抓接口 tun0 的包,看包是不是去了 10.8.0.2 这个地址。如果没有包就加 route ,如果包下一跳没有到 10.8.0.2 ,那就路由器上加 iroute 。
3. 如果上一步,你看到包到了路由器,但是没有回包,你就登录路由器,用 tcpdump 抓包,看路由器有没有收到你的包,还是和上面一样。
4. 再在路由器上 ping 192.168.10.2 ,继续抓包,继续看数据包,如果到了路由器中断了,那就检查防火墙配置(我看了你贴的路由器配置,都是接受,按理说没问题)。
5. 如果最终,你在 192.168.10.2 这个机器上抓到了包,就往原路上跟着一步一步查,就能知道问题在哪里了。

---
其实我的网络和你差不太多,方案也是一样的,这样配置按理说其实没什么问题的。
findwho
2023-11-23 16:34:58 +08:00
@cdlnls 我不太会抓包,下午是厂家的远程给我弄,额,还是 ping 不同。他也抓包看了,说 ping 192.168.10.1 的时候,服务器没有包出来。
ping -> tun0 ->openvpn server -> eth0 ----------- 路由器 eth1--openvpnclient-->tun0
说 tun0 是有数据的,没有具体说哪里没了。路由器抓包是没看到包的。(但是昨天我用 pptp 没问题的啊)
服务器的路由,iptables 他都检查了。。。路由器也看了,还没找到原因。(看日志说我另外一台客户端用的证书一样,让我停掉再 ping ,还是一样。。。)
@blackeeper 给下联系方式,给大佬点杯咖啡。辛苦大佬了。
明天可能还要继续。
blackeeper
2023-11-23 20:14:39 +08:00
@findwho 微信即 ID ,你这个还没搞定么,可以远程的话,我远程给你弄
Timk
199 天前
不好意思这么长时间还挖坟 请问楼主最后是怎么解决的
我这也出现相同的问题了 有数据包到达服务器的 tun0 接口 但是 tun0 接口不回复报文 必须要是 VPN 的地址才可以
findwho
157 天前
@Timk 我后面主要是路由问题,配置好就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/994308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX