Я пытаюсь связать два интернет-канала для увеличения скорости VPN в соответствии с этим руководством: Как связать два (множественных) подключения к Интернету для повышения скорости и аварийного переключения
Но у меня проблемы:
Я работал над этим несколько дней, и он никогда не работал.
Прежде всего, моя топология сети: https://i.imgur.com/yEj6JGM.png
В моем сценарии взгляните на мою конфигурацию:
vim / и т. д. / сеть / интерфейс
auto ens160
iface ens160 inet static
address 192.168.50.254
netmask 255.255.255.0
gateway 192.168.50.1
post-up /usr/local/bin/vpn-start
pre-down /usr/local/bin/vpn-stop
Моя маршрутизация настроена прямо в vpn-start?
# vim /usr/local/bin/vpn-start
#!/bin/bash
openvpn --config /etc/openvpn/tap0.conf
openvpn --config /etc/openvpn/tap1.conf
ip link add bond0 type bond
ip addr add 10.80.0.2/30 dev bond0
ip link set tap0 master bond0
ip link set tap1 master bond0
ip link set bond0 up mtu 1440
ip route add 192.168.50.0/24 via 10.80.0.1 <--Is this right?
Как насчет конфигурации брандмауэра?
version 6
lan="ens160"
vpn="bond+"
interface "${lan}" lan
policy accept
interface "${vpn}" vpn
policy accept
router vpn2lan inface "${vpn}" outface "${lan}"
policy accept
tap0.conf:
# disable encryption, traffic continues unencrypted anyways
auth none
cipher none
dev tap0
mode p2p
port 1194
local 192.168.0.250 <-- Local ip or public ip?
proto udp
log /var/log/tap0.log
verb 3
ping 2
ping-restart 10
persist-tun
compress lz4-v2
daemon
Конфигурация межсетевого экрана:
version 6
server_vpn_ports="udp/1194-1195"
client_vpn_ports="default"
snat4 to 192.168.0.250 outface ens33 dst not 192.168.0.250 <-- What does this mean? local ip or public ip?
interface ens33 web
protection strong
server ssh accept
server vpn accept
# more servers here as per your needs
client all accept
interface bond0 vpn
policy accept
router4 web2vpn inface ens33 outface bond0 dst 192.168.50.0/24,10.80.0.2 <--Is this right?
client all accept
После того, как я сделал всю настройку, ссылка вроде установилась:
root@ubcloud:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Клиент tap1.log:
Sat Aug 1 06:44:39 2020 ******* WARNING *******: All encryption and authentication features disabled -- All data will be tunnelled as clear text and will not be protected against man-in-the-middle changes. PLEASE DO RECONSIDER THIS CONFIGURATION!
Sat Aug 1 06:44:39 2020 Preserving previous TUN/TAP instance: tap1
Sat Aug 1 06:44:39 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]118.152.247.193:1195
Sat Aug 1 06:44:39 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]
Sat Aug 1 06:44:39 2020 UDP link local (bound): [AF_INET]192.168.50.254:1195
Sat Aug 1 06:44:39 2020 UDP link remote: [AF_INET]118.152.247.193:1195
Sat Aug 1 06:44:39 2020 Peer Connection Initiated with [AF_INET]118.152.247.193:1195
Sat Aug 1 06:44:41 2020 Initialization Sequence Completed
ping IP туннеля от клиента:
root@ubcloud:~# ping 10.80.0.2
PING 10.80.0.2 (10.80.0.2) 56(84) bytes of data.
64 bytes from 10.80.0.2: icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from 10.80.0.2: icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from 10.80.0.2: icmp_seq=3 ttl=64 time=0.026 ms
^C
--- 10.80.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2050ms
rtt min/avg/max/mdev = 0.019/0.023/0.026/0.005 ms
root@ubcloud:~# ping 10.80.0.1
PING 10.80.0.1 (10.80.0.1) 56(84) bytes of data.
From 10.80.0.2 icmp_seq=1 Destination Host Unreachable
From 10.80.0.2 icmp_seq=2 Destination Host Unreachable
From 10.80.0.2 icmp_seq=3 Destination Host Unreachable
root@ubcloud:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: tap0
MII Status: up
Speed: 10 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: a6:fa:e9:55:79:2c
Slave queue ID: 0
Slave Interface: tap1
MII Status: up
Speed: 10 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: ae:b9:4a:50:b0:dc
Slave queue ID: 0
Сервер tap0.log:
root@ubcloud:~# cat /var/log/tap0.log
Sat Aug 1 06:43:27 2020 disabling NCP mode (--ncp-disable) because not in P2MP client or server mode
Sat Aug 1 06:43:27 2020 OpenVPN 2.4.9 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Oct 30 2019
Sat Aug 1 06:43:27 2020 library versions: OpenSSL 1.1.1 11 Sep 2018, LZO 2.08
Sat Aug 1 06:43:27 2020 ******* WARNING *******: All encryption and authentication features disabled -- All data will be tunnelled as clear text and will not be protected against man-in-the-middle changes. PLEASE DO RECONSIDER THIS CONFIGURATION!
Sat Aug 1 06:43:27 2020 TUN/TAP device tap0 opened
Sat Aug 1 06:43:27 2020 TUN/TAP TX queue length set to 100
Sat Aug 1 06:43:27 2020 Could not determine IPv4/IPv6 protocol. Using AF_INET
Sat Aug 1 06:43:27 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]
Sat Aug 1 06:43:27 2020 UDPv4 link local (bound): [AF_INET]192.168.0.250:1194
Sat Aug 1 06:43:27 2020 UDPv4 link remote: [AF_UNSPEC]
Sat Aug 1 06:43:30 2020 Peer Connection Initiated with [AF_INET]172.227.224.139:1194
Sat Aug 1 06:43:30 2020 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sat Aug 1 06:43:30 2020 Initialization Sequence Completed
ping IP туннеля с сервера:
root@ubcloud:~# ping 10.80.0.1
PING 10.80.0.1 (10.80.0.1) 56(84) bytes of data.
64 bytes from 10.80.0.1: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 10.80.0.1: icmp_seq=2 ttl=64 time=0.059 ms
^C
--- 10.80.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1030ms
rtt min/avg/max/mdev = 0.048/0.053/0.059/0.009 ms
root@ubcloud:~# ping 10.80.0.2
PING 10.80.0.2 (10.80.0.2) 56(84) bytes of data.
From 10.80.0.1 icmp_seq=1 Destination Host Unreachable
From 10.80.0.1 icmp_seq=2 Destination Host Unreachable
From 10.80.0.1 icmp_seq=3 Destination Host Unreachable
Есть идеи, что я сделал не так? Как настроить маршрутизацию на клиенте, чтобы весь трафик в локальной сети позволял трафику в локальной сети выходить с сервера через туннель?
Еще раз спасибо!
Из аналогичный вопрос спросил на нашем дочернем сайте Network Engineering:
«Склеивание» ссылок на бумаге звучит как отличная идея, но на практике это работает не очень хорошо. Если вы попытаетесь разделить одно соединение между двумя ссылками, вы получите неупорядоченные пакеты, особенно в двух разных сетях. Это значительно снизит вашу пропускную способность. Лучше использовать только одну ссылку.
Программное обеспечение VPN для удаленных пользователей недостаточно сложно, чтобы установить два VPN-соединения и затем принять решение о маршрутизации, чтобы использовать лучший путь. Я не знаю ни о каком таком продукте. Возможно, вам придется создать что-то нестандартное, но я сомневаюсь, что это того стоит.
Я думаю, вам следует подумать об обновлении инфраструктуры VPN, а не о связях, как о временном решении.
2 связанных VPN-канала никогда не будут так хороши, как выделенное VPN-соединение с пропускной способностью, которая вам нужна для одного канала.