Hai đường hầm OpenVPN song song giữa các trang web: không thể truy cập tất cả các giao diện


1

Các thiết lập

Tôi có cấu trúc liên kết sau:

              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

Trên mỗi trang, máy chủ + máy khách OpenVPN là Raspberry Pi chạy một phiên bản máy chủ của OpenVPN và một phiên bản máy khách của OpenVPN.

Bảng định tuyến kernel trên máy chủ 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

và của máy chủ OpenVPN trên SiteB:

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

Như bạn thấy, các mạng duy nhất có nhiều tuyến là SiteA và SiteB. Cả hai máy chủ OpenVPN đều thích định tuyến đến trang khác thông qua giao diện máy khách / mạng OpenVPN.

Vấn đề

Hầu hết các định tuyến hoạt động tốt. Bất kỳ máy chủ lưu trữ nào trên SiteA đều có thể giao tiếp hai chiều với

  • Bất kỳ giao diện máy chủ nào trên SiteB
  • Bất kỳ giao diện máy chủ nào trên VpnSiteA
  • Bất kỳ giao diện máy chủ nào trên VpnSiteB ngoại trừ TUN0 / 172.25.215.1

Tức là một máy chủ trên SiteA có thể ping

  • 10.1.1.3
  • 10.1.2.1
  • 172.25.215.2
  • 172.25.214.3
  • 10.1.2.2
  • Nhưng không phải là 172.25.215.1

Đó là những gì tôi muốn giải quyết.

Khắc phục sự cố tôi đã thực hiện

Kiểm tra 1

Trên một máy chủ lưu trữ trên SiteA, tôi ping 172.25.215.1 và theo dõi những gì đã xảy ra với TCPDUMPcả hai máy chủ OpenVPN.

  • Yêu cầu Echo đến OpenVPN lưu trữ SiteA trên giao diện LAN của nó
  • Yêu cầu Echo rời OpenVPN lưu trữ SiteA trên giao diện TUN1 của nó
  • Yêu cầu Echo đến OpenVPN lưu trữ SiteB trên giao diện TUN0 của nó
  • Echo trả lời rời khỏi máy chủ lưu trữ OpenVPN SiteB trên giao diện TUN1 của nó
  • Không có phản hồi Echo nào đến OpenVPN lưu trữ SiteA trên bất kỳ giao diện nào của nó.

Vì vậy, đây là một cái gì đó đi sai.

Kiểm tra 2

Tôi đã vô hiệu hóa máy chủ OpenVPN trên máy chủ OpenVPN của SiteA và vô hiệu hóa ứng dụng khách OpenVPN trên máy chủ OpenVPN nếu SiteB. Nói cách khác, bây giờ chỉ có một đường hầm. Lần này, tôi đã thành công trong việc ping 172.25.215.1 từ một máy chủ lưu trữ trên SiteA.

Vì vậy, khi tôi có hai đường hầm, có gì đó không ổn.

Lý lịch

Tại sao không chỉ là một đường hầm? Thỉnh thoảng, ISP của tôi ở cả hai trang web đều ngừng gán cho tôi một địa chỉ IP công cộng, đặt tôi phía sau CGN. Nếu điều này xảy ra trên trang web lưu trữ máy chủ OpenVPN, kết nối giữa các trang sẽ bị hỏng. Nhưng nếu cả hai trang web đều chạy một máy chủ OpenVPN, nếu một trang web đứng sau CGN, không có vấn đề gì.

ruột thừa

server.conf của trang chủ OpenVPN Trang webA:

; 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.conf của trang chủ OpenVPN Trang webA:

; 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

Lưu ý: cài đặt liên quan đến bảo mật được loại bỏ.

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

Hai điều này liên quan đến giảm thiểu CGN.

Các tệp cho máy chủ OpenVPN trên SiteB giống hệt nhau ngoại trừ các địa chỉ mạng khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.