如何通过 OpenVPN 隧道在互联网上两个独立的 LAN 之间创建路由?

如何通过 OpenVPN 隧道在互联网上两个独立的 LAN 之间创建路由?

图表

我在两个不同的站点拥有独立的路由器/OpenVPN 设备。这些设备实际上是运行 OpenWRT 12.09、r36088 的 TP Link 路由器。我希望这两个路由器后面的客户端能够相互连接。

一个路由器配置为 192.168.10.0/24 前的 OpenVPN 服务器 192.168.10.1,另一个路由器配置为 10.1.1.0/24 前的 OpenVPN 客户端 10.1.1.1。

到目前为止,两者之间存在一种隧道。OpenVPN 客户端可以连接到 10.1.1.0/24 和 192.168.10.0/24 上的所有主机。我能够让 OpenVPN 服务器在其 VPN 接口上连接到客户端,但仅此而已。我也无法从 OpenVPN 客户端后面的主机连接到 OpenVPN 服务器后面的主机——这确实是我的最终目标。

  • 该服务器实际上位于康卡斯特小型企业调制解调器/路由器 (lan IP 192.168.1.1) 的 DMZ 中,所有流量都转发到该服务器。康卡斯特路由器为该服务器分配了 192.168.1.2,其 LAN 端的 IP 为 192.168.10.1。

服务器

# ip route show
default via 192.168.1.1 dev eth0.2  proto static 
10.8.0.0/24 via 10.8.0.2 dev tun0 
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1 
10.8.0.6 via 10.8.0.2 dev tun0 
192.168.1.0/24 dev eth0.2  proto kernel  scope link  src 192.168.1.2 
192.168.10.0/24 dev br-lan  proto kernel  scope link  src 192.168.10.1 

# ping 10.8.0.6 -c 2
PING 10.8.0.6 (10.8.0.6): 56 data bytes
64 bytes from 10.8.0.6: seq=0 ttl=64 time=48.579 ms
64 bytes from 10.8.0.6: seq=1 ttl=64 time=236.587 ms

--- 10.8.0.6 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 48.579/142.583/236.587 ms

# ping 10.1.1.1 -c 2
PING 10.1.1.1 (10.1.1.1): 56 data bytes
--- 10.1.1.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

## A ROUTE I THINK I MAY NEED TO ADD
# ip route add 10.1.1.0/24 via 10.8.0.6
RTNETLINK answers: No such process

客户

# ip route show
default via $PUBLIC_IP dev eth0.2  proto static 
10.1.1.0/24 dev br-lan  proto kernel  scope link  src 10.1.1.1 
10.8.0.1 via 10.8.0.5 dev tun0 
10.8.0.5 dev tun0  proto kernel  scope link  src 10.8.0.6 
$PUBLIC_IP_RANGE dev eth0.2  proto kernel  scope link  src $PUBLIC_IP
192.168.10.0/24 dev tun0  scope link 

# ping 192.168.10.25
PING 192.168.10.25 (192.168.10.25): 56 data bytes
64 bytes from 192.168.10.25: seq=0 ttl=63 time=294.408 ms
64 bytes from 192.168.10.25: seq=1 ttl=63 time=21.798 ms

--- 192.168.10.25 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 21.798/158.103/294.408 ms

客户端背后的主持人

$ ping 192.168.10.25
PING 192.168.10.25 (192.168.10.25) 56(84) bytes of data.
From 10.1.1.1 icmp_seq=1 Destination Port Unreachable
From 10.1.1.1 icmp_seq=2 Destination Port Unreachable

--- 192.168.10.25 ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms

$ traceroute 192.168.10.25
traceroute to 192.168.10.25 (192.168.10.25), 30 hops max, 60 byte packets
 1  OpenWrt.lan (10.1.1.1)  0.225 ms  0.230 ms  0.274 ms
 2  OpenWrt.lan (10.1.1.1)  0.350 ms  0.417 ms  0.475 ms

我想要做的事情在 OpenVPN 文档中的这个例子中有所涉及](https://openvpn.net/index.php/open-source/documentation/howto.html#examples)在页面“# EXAMPLE: 假设客户端”上找到。

那里的文档建议对 openvpn server.conf 进行修改,但由于某种原因,我似乎无法弄清楚最终修改应该在哪里或如何加载它。

我所知道的关于 OpenVPN 的大部分信息都写在了这个页面或 OpenWRT OpenVPN 初学者设置中。我猜 OpenWRT 使用某种专有配置管理工具 uci,因此隐藏了一些初始 openvpn 配置。

wiki.openwrt.org/doc/howto/vpn.openvpn

答案1

抱歉,你的设置不清楚。

我理解你的设置的方式是这样的:

  • 您有一个 192.168.10.0/24 子网,连接到盒子 A 的 br-lan 接口。
  • 框 A 是您的 OpenVPN 服务器。
  • 盒子A的VPN IP是10.8.0.5。
  • 框 B 是您的 OpenVPN 客户端。
  • 盒子B的VPN IP是10.8.0.2。
  • 有一个 10.1.1.0/24 子网连接到盒子 B 的 br-lan 接口。

有两个 IP 的功能不明确:10.8.0.1 和 10.8.0.6。它们被分配到哪些盒子上的哪些接口,它们的作用是什么?

除了 10.8.0.{1,6} 的神秘性之外,似乎缺少的是盒子 A 到盒子 B 后面的子网的路由:

ip ro add 10.1.1.0/24 via 10.8.0.2

相关内容