@ user48116에서 제공 한 답변을 사용했으며 매력처럼 작동합니다. 설정은 실제로 매우 쉽습니다!
참고 : 하나의 단일 서버에 두 번 연결 하여이 문제를 이미 해결했기 때문에 이것을 구현했습니다. 두 서버로 설정을 시도하려면 가장 쉬운 방법은 포트 전달을 사용하여 UDP 포트를 두 번째 서버에서 첫 번째 서버로 전달하고 여기에 설명 된 것과 동일한 레시피를 사용하는 것입니다. 나는 이것을 직접 테스트하지 않았다.
먼저, 본딩을 지원하는 2.6 커널 (모든 최신 배포판의 기본값)이 있고 ifenslave가 설치되어 있는지 확인하십시오.
다음으로 이것을 /etc/rc.local 또는 원하는 다른 장소에 넣으십시오. 그러나 openvpn을 시작 하기 전에 실행하십시오 (bond0에 바인딩하려고하기 때문에).
고객:
modprobe bonding mode=broadcast
ifconfig bond0 10.10.0.2 netmask 255.255.255.0 up
여기에 필요한 경우 라우팅을 추가 할 수 있습니다. 다른 쪽에서도 올바른 라우팅을 모두 수행하십시오.
route add -net 10.7.0.0/24 gw 10.10.0.1
섬기는 사람:
modprobe bonding mode=broadcast
ifconfig bond0 10.10.0.1 netmask 255.255.255.0 up
/etc/openvpn/tap-up.sh 스크립트를 작성하십시오 (그리고 chmod a + x tap-up.sh로 실행 가능으로 표시하는 것을 잊지 마십시오) :
#!/bin/sh
# called as: cmd tap_dev tap_mtu link_mtu ifconfig_local_ip ifconfig_netmask [ init | restart ]
ifenslave bond0 "$1"
그런 다음 공유 키와 함께 bridge0a.conf 및 bridge0b.conf를 / etc / openvpn /에 추가하십시오. 파일은 다른 포트를 제외하고 a와 b에 동일합니다 (예 : b에 3002 사용). 서버의 공용 IP로 11.22.33.44를 바꾸십시오.
고객:
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
섬기는 사람:
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
새로운 VPN 구성이 시작되도록 / etc / defaults / openvpn을 편집하는 것을 잊지 마십시오. 머신을 재부팅하거나 rc.local을로드하고 openvpn을 수동으로 다시 시작하십시오.
이제 설정을 테스트 할 준비가되었습니다 :
# 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
모든 것이 잘되고 회선이 양호하면 모든 ICMP 패키지에 대해 네 개의 회신 이 표시 됩니다. 패키지는 로컬쪽에 복제되고이 두 패키지에 대한 회신은 원격쪽에 다시 복제됩니다. TCP는 단순히 모든 중복 항목을 무시하기 때문에 TCP 연결에는 문제가되지 않습니다.
이것은 UDP 패킷의 문제입니다. 중복을 처리하는 것은 소프트웨어에 달려 있습니다. 예를 들어, DNS 쿼리는 예상 된 두 개 대신 네 개의 회신을 생성합니다 (두 번이 아니라 응답에 일반 대역폭의 네 배를 사용함).
# 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)
행운을 빕니다!