如何从 Open VPN 服务器(Ubuntu)、VPN 客户端 RouterOS 访问子网?

如何从 Open VPN 服务器(Ubuntu)、VPN 客户端 RouterOS 访问子网?

设置如下:

[OpenVPN server]    --- WAN --- [RouterOS client]   --- [Local subnet client]
10.5.0.0                        10.5.0.14               10.10.10.2
$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         123.45.128.1    0.0.0.0         UG    0      0        0 eth0
10.5.0.0        10.5.0.2        255.255.255.0   UG    0      0        0 tun0
10.5.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.18.0.0       0.0.0.0         255.255.0.0     U     0      0        0 eth0
123.45.128.0    0.0.0.0         255.255.240.0   U     0      0        0 eth0
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 123.45.67.89  netmask 255.255.240.0  broadcast 123.45.123.255
        inet6 fe80::b47f:49ff:fe42:8567  prefixlen 64  scopeid 0x20<link>
        ether b6:7f:49:42:85:67  txqueuelen 1000  (Ethernet)
        RX packets 106602  bytes 58005294 (58.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 129890  bytes 57533013 (57.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 296  bytes 89008 (89.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 296  bytes 89008 (89.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.5.0.1  netmask 255.255.255.255  destination 10.5.0.2
        inet6 fe80::8d8b:2759:671:2327  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 1015  bytes 69353 (69.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2248  bytes 325055 (325.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
$sudo ufw status
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
$ ping 10.5.0.14
reachable, 0% packet loss

❔ 如何从 [OpenVPN 服务器] 路由到 [本地子网]?例如ping 10.10.10.2

答案1

如果您想要访问 openvpn 客户端后面的子网,您需要两样东西(这仅适用于基于路由的(tun 设备)VPN):

  • 激活客户端特定配置(--client-config-dir
  • 在正确客户端的配置中,使用交换机--iroute告诉 openvpn 它应路由隧道内的子网

之后,您需要在客户端上激活 IP 转发 - 并调整防火墙。应该就是这样...

这里是我提到的开关的详细描述。

希望能帮助到你!

答案2

主动路由需要配置两端来识别允许它们访问对方网络地址的节点,此外还需要配置防火墙规则来让流量通过。

我猜想这些信息对应于 OpenVPN 服务器;它的末尾说要到达 10.5.0.0/24 应该经过节点 10.5.0.2,而要到达 10.18.0.0/16 应该经过默认网关 (eth0)。没有到 10.10.10.0/24 的路由,那么你应该添加它:

ip route add 10.10.10.0/24 via 10.5.0.14

那么路径的前半部分是

openvpn(10.5.0.1)-->10.5.0.2-->10.5.0.14(RouterOS)-->10.10.10.x

另一方面,RouterOS 位于 vpn 网络段 10.5.0.0 中,因此它应该已经有一条到达 10.5.0.1 服务器的路由,路径为:

RouterOS(10.5.0.14)-->10.5.0.1(openvpn)

但是任何客户端 10.10.10.x 也必须知道如何到达 10.5.0.1;如果 RouterOS 是它们的默认网关,地址可能是 10.10.10.254 或 10.10.10.1,这就足够了,我们有以下返回路径:

client 10.10.10.2-->10.10.10.1(RouterOS)10.5.0.14-->10.5.0.1(openvpn)

如果 RouterOS 不是默认网关,则需要在该网关中添加一条规则(以便任何客户端都可以连接),否则在每个所需的客户端中添加一条规则。因此,如果 10.10.10.2 是 Linux,则需要指示路径的下一步在哪里:

 ip route add 10.5.0.0/24 via 10.5.0.14

如果 10.10.10.2 也作为客户端连接到 VPN 并具有 10.5.0.x 地址,则它应该已经具有到 10.5.0.x 的路由(如 RouterOS 一样),并且能够遍历显示的路径而无需更多路由。

我希望这个说明能够澄清所需的路由概念:“我知道如何联系你,你也知道如何联系我,让我们谈谈吧。”:)

相关内容