设置

设置

设置

我有以下拓扑:

              Router
              172.25.214.1
                  |
                  |
                  |
              SiteB
              172.25.214.0/24
                  |
                  |
                  |
          LAN: 172.25.214.3
       OpenVPN server+client B
TUN0: 172.25.215.1    TUN1: 10.1.2.2
        |                   |
        |                   |
        |                   |
    VpnSiteB            VpnSiteA
    172.25.215.0/24     10.1.2.0/24
        |                   |
        |                   |
        |                   |
TUN1: 172.25.215.2    TUN0: 10.1.2.1    
       OpenVPN server+client A
          LAN: 10.1.1.3
                  |
                  |
                  |
              SiteA
              10.1.1.0/24
                  |
                  |
                  |
              Router
              10.1.1.1

在每个站点上,OpenVPN 服务器+客户端都是一个 Raspberry Pi,运行一个 OpenVPN 服务器实例和一个 OpenVPN 客户端实例。

OpenVPN 主机 SiteA 上的内核路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.1.1.1        0.0.0.0         UG    0      0        0 eth0
10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.1.2.0        0.0.0.0         255.255.255.0   U     0      0        0 tun0
172.25.214.0    172.25.215.1    255.255.255.0   UG    20     0        0 tun1
172.25.214.0    10.1.2.2        255.255.255.0   UG    30     0        0 tun0
172.25.215.0    0.0.0.0         255.255.255.0   U     0      0        0 tun1

以及 SiteB 上的 OpenVPN 主机的:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.25.214.1    0.0.0.0         UG    0      0        0 eth0
10.1.1.0        10.1.2.1        255.255.255.0   UG    20     0        0 tun1
10.1.1.0        172.25.215.2    255.255.255.0   UG    30     0        0 tun0
10.1.2.0        0.0.0.0         255.255.255.0   U     0      0        0 tun1
172.25.214.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.25.215.0    0.0.0.0         255.255.255.0   U     0      0        0 tun0

如您所见,唯一具有多条路由的网络是 SiteA 和 SiteB。OpenVPN 主机都倾向于通过其客户接口/OpenVPN 网络。

问题

最多路由工作正常。SiteA 上的任何主机都可以与

  • SiteB 上的任意主机接口
  • VpnSiteA 上的任意主机接口
  • VpnSiteB 上的任意主机接口除了TUN0/172.25.215.1

即 SiteA 上的主机可以 ping 通

  • 10.1.1.3
  • 10.1.2.1
  • 172.25.215.2
  • 172.25.214.3
  • 10.1.2.2
  • 不是172.25.215.1

这就是我想要解决的问题。

我已完成的故障排除

测试 1

在 SiteA 上的主机上,我 ping 172.25.215.1 并跟踪TCPDUMP两个 OpenVPN 主机上发生的情况。

  • 回显请求到达 OpenVPN 主机 SiteA 的 LAN 接口
  • 回显请求离开 OpenVPN 主机 SiteA 在其 TUN1 接口上
  • 回显请求到达 OpenVPN 主机 SiteB 的 TUN0 接口
  • 在其 TUN1 接口上回显回复离开 OpenVPN 主机 SiteB
  • 回显回复到达 OpenVPN 主机 SiteA任何它的接口。

所以这里出了问题。

测试 2

我禁用了 SiteA 的 OpenVPN 主机上的 OpenVPN 服务器,并禁用了 SiteB 的 OpenVPN 主机上的 OpenVPN 客户端。换句话说,现在只有一个隧道。这一次,我成功的从 SiteA 上的主机 ping 172.25.215.1。

所以当我有两个隧道时就会出现问题。

背景

为什么不只使用一条隧道?时不时地,两个站点的 ISP 都会停止为我分配公共 IP 地址,让我处于 CGN 之后。如果这种情况发生在托管 OpenVPN 服务器的站点上,站点之间的连接就会中断。但如果两个站点都运行 OpenVPN 服务器,如果其中一个站点处于 CGN 之后,那就没问题了。

附录

server.confOpenVPN 主机 SiteA 的:

; General
; ---------------------------------------------------------

dev tun0
proto udp
port xxxx                                
client-config-dir /etc/openvpn/ccd

keepalive 10 120
max-clients 20
tls-server

verb 2

; Network
; ---------------------------------------------------------

topology subnet
client-to-client

server 10.1.2.0 255.255.255.0                                  

route 172.25.214.0 255.255.255.0 10.1.2.2 30      

client.confOpenVPN 主机 SiteA 的:

; General
; ---------------------------------------------------------

client
dev tun1
proto udp
remote xxxx

resolv-retry infinite
connect-retry 5 1800
explicit-exit-notify
nobind
tls-client

verb 2

; Network
; ---------------------------------------------------------

script-security 2
up /etc/openvpn/uppe.sh
down /etc/openvpn/nere.sh
up-restart
up-delay

iproute /usr/local/sbin/unpriv-ip

注意:安全相关的设置已被删除。

uppe.sh

#!/bin/bash

/usr/local/sbin/unpriv-ip route add  172.25.214.0/24 via 172.25.215.1 dev tun1 metric 20
exit 0

nere.sh

#!/bin/bash

/usr/local/sbin/unpriv-ip route del 172.25.214.0/24 via 172.25.215.1 dev tun1 metric 20
exit 0

这两项与 CGN 缓解有关。

除了网络地址不同之外,SiteB 上的 OpenVPN 主机的文件是相同的。

相关内容