家里网络设置了旁路由后, OpenVPN 连进来,可以 ping,但是无法正常连接何故?

2021-01-13 10:34:25 +08:00
 nozer

路由配置情况如图,我希望 PC1 也能够正常访问:

有没有懂的,指点指点,不知道如何下手。

11082 次点击
所在节点    程序员
51 条回复
UnknownSky
2021-01-13 11:14:10 +08:00
你這 openvpn server 直接掛在 Openwrt 上不得了
UnknownSky
2021-01-13 11:15:24 +08:00
主路由什麼系統,建 server 也要 iptables NAT 規則。
zliea
2021-01-13 11:32:50 +08:00
openvpn 服务端需要虚拟出一个网络,需要 iptables 指定 source 为改网络的转发到物理网卡上。
iptables -t nat -A POSTROUTING -s x.x.x.x/x -o eth0 -j MASQURADE
Jirajine
2021-01-13 11:41:23 +08:00
你这配的乱七八糟,旁路由上开 masquerade 是要搞什么?
盲猜 hairpin nat 的问题, 把 masquerade 去掉。
nozer
2021-01-13 13:37:52 +08:00
@Jirajine ? 我感觉线路很清晰啊,哪里乱了。
nozer
2021-01-13 13:41:21 +08:00
@Jirajine 去掉的话无法正常上网了,
huangya
2021-01-13 13:56:40 +08:00
openvpn client 虚拟网卡拿到的 IP 也是 192.168.2.0/24 网段吗?
huangya
2021-01-13 14:00:22 +08:00
另外,在 openvpn client 虚拟网卡上抓下 ssh 或者 web 服务至少有没有三次握手的包。
nozer
2021-01-13 14:02:38 +08:00
@huangya vpn client 的虚拟网卡网段是:10.8.0.0/24
huangya
2021-01-13 14:10:19 +08:00
@nozer
在 PC1 上添加一条到 10.8.0.0/24 的静态路由.linux 下的命令:
sudo route add -net 10.8.0.0/24 gw 192.168.2.1

Windows 用管理员权限打开 cmd:
route add mask 255.255.255.0 192.168.2.1
huangya
2021-01-13 14:12:37 +08:00
@huangya
更正:
Windows 用管理员权限打开 cmd:
route add 10.8.0.0 mask 255.255.255.0 192.168.2.1
nozer
2021-01-13 14:13:25 +08:00
@huangya 谢谢我试试看。
jasonyang9
2021-01-13 14:15:38 +08:00
瞎猜的,
PC1 的默认网关是 192.168.2.2 旁路由,所以对 10.8.0.0/24 发来的数据包它不知道如何返回就走默认网关;
旁路由收到后也不知道如何到 10.8.0.0/24,也走它的默认网关,192.168.2.1,且被 iptables 匹配到,做了 MASQ,也就是 SNAT,那么数据包的源地址就被替换为旁路由自己的 192.168.2.2 ;
而请求数据包的目标地址是 192.168.2.10 ( PC1 ),响应却是从 192.168.2.2 收到,就被丢掉了。。。
nozer
2021-01-13 14:19:58 +08:00
@jasonyang9 我也有这种猜测,但是不知道怎么处理。 @huangya 的办法不错,我试试看应该能解决问题。

但是如果能够在路由器上解决问题就更好了,那样就不用在 PC 上单独配置。
huangya
2021-01-13 14:23:05 +08:00
@jasonyang9 yes, I think so. 楼主可以用 wireshark 检查下 icmp 包和 tcp 包的源地址。所以我提供的方案是 vpn 网段直接走 192.168.2.1
nozer
2021-01-13 14:23:06 +08:00
或许如 @Jirajine 所说,去掉 MASQ 就可以了,但是去掉 MASQ 似乎会导致数据包在 192.168.2.2 上循环导致无法正常上网了。
nozer
2021-01-13 14:23:36 +08:00
@huangya 嗯嗯,我抓包看看。
huangya
2021-01-13 14:31:38 +08:00
@nozer

>但是如果能够在路由器上解决问题就更好了,那样就不用在 PC 上单独配置。

>或许如 @Jirajine 所说,去掉 MASQ 就可以了,但是去掉 MASQ 似乎会导致数据包在 192.168.2.2 上循环导致无法正常上网了。

可以在 OpenWRT 上用如下命令试试看,这种方法或许也可以,这样就不需要在 PC 上单独配置静态路由了.
iptables -I nat 1 -s 10.8.0.0/24 -j ACCEPT
Lemeng
2021-01-13 14:33:41 +08:00
抓包了解走向,走到哪步,哪步出了问题
huangya
2021-01-13 14:35:44 +08:00
@huangya @nozer
最近总是打错命令

>可以在 OpenWRT 上用如下命令试试看,这种方法或许也可以,这样就不需要在 PC 上单独配置静态路由了.
>iptables -I nat 1 -s 10.8.0.0/24 -j ACCEPT

->
iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -j ACCEPT

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

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

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

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

© 2021 V2EX