@ User48116 tarafından verilen yanıtı kullandım ve bir cazibe gibi çalışıyor. Kurulum aslında oldukça kolay!
NOT : Bunu tek bir sunucuya iki bağlantı ile uyguladım, çünkü bu zaten benim için sorunu çözdü. İki sunucuyla bir kurulum denemek istiyorsanız, en kolay yol muhtemelen UDP bağlantı noktasını ikinci sunucudan birinciye iletmek için bağlantı noktası iletmeyi kullanmak ve burada açıklananla aynı tarifi kullanmaktır. Bunu kendim test etmedim.
İlk olarak, bağlama desteğine sahip 2.6 çekirdeğinizin (tüm modern dağıtımlarda varsayılan) olduğundan ve ifenslave'in kurulu olduğundan emin olun.
Ardından, bunu /etc/rc.local veya tercih ettiğiniz başka bir yere koyun, ancak openvpn başlamadan önce çalıştırıldığından emin olun (çünkü bond0'a bağlanmaya çalışacaktır):
Müşteri:
modprobe bonding mode=broadcast
ifconfig bond0 10.10.0.2 netmask 255.255.255.0 up
Burada gerekirse bazı yönlendirme ekleyebilirsiniz, diğer taraftan da tüm uygun yönlendirmeyi yaptığınızdan emin olun.
route add -net 10.7.0.0/24 gw 10.10.0.1
Sunucu:
modprobe bonding mode=broadcast
ifconfig bond0 10.10.0.1 netmask 255.255.255.0 up
Bir /etc/openvpn/tap-up.sh betiği oluşturun (ve chmod a + x tap-up.sh ile yürütülebilir dosyayı işaretlemeyi unutmayın):
#!/bin/sh
# called as: cmd tap_dev tap_mtu link_mtu ifconfig_local_ip ifconfig_netmask [ init | restart ]
ifenslave bond0 "$1"
Ardından, paylaşılan bir anahtarla birlikte / etc / openvpn / öğesine bir bridge0a.conf ve bridge0b.conf ekleyin. Dosyalar farklı bir bağlantı noktası dışında a ve b için aynıdır (örneğin, b için 3002 kullanın). 11.22.33.44'ü sunucunuzun genel IP'si ile değiştirin.
Müşteri:
remote 11.22.33.44
dev tap
port 3001
rport 3001
secret bridge.key
comp-lzo
verb 4
nobind
persist-tun
persist-key
script-security 2
up /etc/openvpn/tap-up.sh
Sunucu:
local 11.22.33.44
dev tap
port 3001
lport 3001
secret bridge.key
comp-lzo
verb 4
script-security 2
up /etc/openvpn/tap-up.sh
Yeni VPN yapılandırmalarınızın başlatıldığından emin olmak için / etc / defaultults / openvpn dosyasını düzenlemeyi unutmayın. Makinelerinizi yeniden başlatın veya rc.local yükleyin ve openvpn'yi manuel olarak yeniden başlatın.
Artık kurulumunuzu test etmeye hazırsınız:
# ping 10.10.0.1
PING 10.10.0.1 (10.10.0.1) 56(84) bytes of data.
64 bytes from 10.10.0.1: icmp_req=1 ttl=64 time=50.4 ms
64 bytes from 10.10.0.1: icmp_req=1 ttl=64 time=51.1 ms (DUP!)
64 bytes from 10.10.0.1: icmp_req=1 ttl=64 time=51.1 ms (DUP!)
64 bytes from 10.10.0.1: icmp_req=1 ttl=64 time=51.1 ms (DUP!)
64 bytes from 10.10.0.1: icmp_req=2 ttl=64 time=52.0 ms
64 bytes from 10.10.0.1: icmp_req=2 ttl=64 time=52.2 ms (DUP!)
64 bytes from 10.10.0.1: icmp_req=2 ttl=64 time=53.0 ms (DUP!)
64 bytes from 10.10.0.1: icmp_req=2 ttl=64 time=53.1 ms (DUP!)
--- 10.10.0.1 ping statistics ---
2 packets transmitted, 2 received, +6 duplicates, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 50.428/51.786/53.160/0.955 ms
Her şey yolunda giderse ve hat iyi ise, her ICMP paketi için dört yanıt görürsünüz : paketleriniz yerel tarafta çoğaltılır ve bu iki pakete verilen yanıtlar uzak tarafta tekrar çoğaltılır. Bu TCP bağlantıları için bir sorun olmayacaktır, çünkü TCP tüm kopyaları yok sayar.
Kopyaları işlemek için yazılıma bağlı olduğundan, bu UDP paketleri için bir sorundur. Örneğin, bir DNS sorgusu beklenen iki yerine dört yanıt verir (ve yanıt için iki kez yerine normal bant genişliğinin dört katını kullanır):
# tcpdump -i bond0 -n port 53
listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:30:39.870740 IP 10.10.0.2.59330 > 10.7.0.1.53: 59577+ A? serverfault.com. (33)
13:30:40.174281 IP 10.7.0.1.53 > 10.10.0.2.59330: 59577 1/0/0 A 64.34.119.12 (49)
13:30:40.174471 IP 10.7.0.1.53 > 10.10.0.2.59330: 59577 1/0/0 A 64.34.119.12 (49)
13:30:40.186664 IP 10.7.0.1.53 > 10.10.0.2.59330: 59577 1/0/0 A 64.34.119.12 (49)
13:30:40.187030 IP 10.7.0.1.53 > 10.10.0.2.59330: 59577 1/0/0 A 64.34.119.12 (49)
İyi şanslar!