开启VPN后如何在私有网络内通过SSH连接PC2
开启VPN后如何在私有网络内通过SSH连接PC2
嗨,我来帮你解决这个问题!你遇到的情况其实很常见——当PC2连上VPN后,默认路由被改成了走VPN接口(这里是nordlynx),所以即使你的内网IP还显示正常,PC2对外的回应流量会走VPN出去,而不是通过本地的wlan0回到私有网络,这就导致PC1收不到SSH的回应包了。
结合你提供的网络信息,我给你几个可行的解决方案:
方案一:添加静态路由让内网流量走本地接口
这是最直接的临时/永久解决方法,强制私有网段的流量通过wlan0传输:
- 先在PC2上查看连VPN后的路由表,确认默认路由已经指向VPN:
netstat -rn # 或者用更现代的命令 ip route show - 添加一条针对私有网段的静态路由,让目标为
192.168.189.0/24的流量走wlan0,网关用你的路由器IP192.168.189.1:sudo ip route add 192.168.189.0/24 dev wlan0 via 192.168.189.1 - 现在从PC1尝试SSH连接PC2的内网IP,应该就能正常通信了。如果想让这条路由重启后依然生效:
- 对于老版本的Debian/Raspbian,可以把命令添加到
/etc/rc.local文件中(注意要在exit 0之前); - 对于使用Netplan的新版本(比如Ubuntu 18.04+),可以在Netplan配置文件里添加路由规则,然后执行
sudo netplan apply生效。
- 对于老版本的Debian/Raspbian,可以把命令添加到
方案二:配置VPN拆分隧道,排除内网流量
很多VPN客户端(包括你用的NordLynx)支持拆分隧道功能,允许指定哪些流量不走VPN:
- 打开NordVPN客户端的设置,找到类似「排除本地网络」「拆分隧道」的选项;
- 将你的私有网段
192.168.189.0/24添加到排除列表中; - 保存设置后,VPN只会接管外网流量,内网通信依然通过
wlan0进行,无需手动修改路由。
方案三:绑定SSH服务到内网IP
让SSH服务只监听PC2的内网IP,确保回应流量从本地接口发出:
- 编辑SSH配置文件:
sudo nano /etc/ssh/sshd_config - 找到
ListenAddress选项(如果没有就手动添加),修改为:ListenAddress 192.168.189.174 - 重启SSH服务生效:
sudo systemctl restart sshd - 这个方法可以配合方案一使用,进一步确保SSH流量走内网接口。
建议先尝试方案一或方案二,这两个方法更高效,不需要修改服务配置。
备注:内容来源于stack exchange,提问作者Greendev_2088




