You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于OpenVPN的跨路由器LAN服务端口永久转发及双向互通问题求助与解决

基于OpenVPN的跨路由器LAN服务端口永久转发及双向互通问题求助与解决

各位大佬好,抱歉如果这个问题已经在别的帖子里讨论过了,但我找了一圈没找到适合我的解决方案,想请教下大家:

我有个关于跨路由器网络的问题,想把路由器R2下主机192.168.1.21上任意服务的端口永久共享给路由器R1下的主机192.168.1.121。目前网络里R1下有台192.168.1.112服务器,通过OpenVPN的tun0隧道连接到R2下的192.168.1.20服务器。我现在能用SSH隧道转发端口,但想要个永久的方案,麻烦各位帮忙出出主意,所有服务器都是Linux系统。


相关配置信息

OpenVPN服务器配置(192.168.1.112)

local 192.168.1.112
port 1194
proto tcp4
dev tun
ca ca.crt
cert server-dell.crt
key server-dell.key  # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
#ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
client-config-dir ccd
;push "route 192.168.1.0 255.255.255.0"
;push "route 10.8.0.0 255.255.255.0"
;push "route 192.168.2.0 255.255.255.0"
;route 192.168.2.0 255.255.255.0
client-to-client
push "route 192.168.1.0 255.255.255.0"
push "route 10.8.0.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
route 192.168.2.0 255.255.255.0
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
status /var/log/openvpn/openvpn-status.log
verb 3

OpenVPN客户端配置目录(ccd)内容

ifconfig-push 10.8.0.10 255.255.255.0
iroute 192.168.2.0 255.255.255.0

排查与调整过程(按时间线)

2024-03-08 更新

我把R2下的内网地址改成了192.168.2.0,还给两台路由器都加了路由。但执行 traceroute 后发现:

  • R1下的PC无法在浏览器打开R2的管理页面(192.168.2.1)
  • 目标主机192.168.2.21在R2内网能正常ping通,但跨网访问有问题

附上相关信息:

  • PC1 traceroute 结果:
[此处为tracert 1、tracert 2内容]
  • R1路由器配置(192.168.1.1):
[R1 config内容]
  • R2路由器配置(192.168.2.1):
[R2 config内容]

2024-03-09 更新

现在的情况有点奇怪:

  • R1下的PC1(192.168.1.120)能正常访问OpenVPN服务器(10.8.0.1)上的服务,但访问不了OpenVPN客户端(10.8.0.10)或者192.168.2.20的服务
  • R2下的Windows 10虚拟机(192.168.2.22)却能正常访问192.168.1.112的服务
    简单说就是客户端LAN能看到服务器LAN,但服务器LAN看不到客户端LAN

2024-03-10 更新

补充个之前没提到的细节:OpenVPN的tun0客户端其实是R2内网里的另一台主机(192.168.2.115),之前没画在拓扑图里。

2024-03-11 更新

在OpenVPN服务器上添加了iptables规则后,服务器本身已经能ping通客户端LAN的机器,也能正常访问比如Webmin这类服务了,但R1下的LAN主机(比如PC1 192.168.1.120)还是没法ping通客户端LAN的机器,也访问不了对应的服务。


最终解决方法

终于搞定了LAN到LAN的双向互通!解决方案是在OpenVPN服务器上执行以下iptables命令(注:之前试的命令里有个-J的笔误,正确是小写-j):

iptables -t nat -A POSTROUTING -o enp2s0  -j MASQUERADE
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o enp2s0 -j ACCEPT
iptables -A FORWARD -i enp2s0 -o tun0 -j ACCEPT

备注:内容来源于stack exchange,提问作者Vodek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:29:51