私は@ user48116から提供された回答を使用しましたが、それは魅力のように機能します。設定は実際には非常に簡単です!
注:これはすでに問題を解決しているので、1つの単一サーバーへの2つの接続でこれを実装しました。2つのサーバーでセットアップを試行する場合、おそらく最も簡単な方法は、ポート転送を使用して2番目のサーバーから最初のサーバーに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を使用します)。11.22.33.44をサーバーのパブリックIPに置き換えます。
クライアント:
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
/ etc / defaults / openvpnを編集して、新しいVPN構成が開始されていることを確認してください。マシンを再起動するか、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パッケージごとに4つの応答が表示されます。パッケージはローカル側で複製され、これらの2つのパッケージへの応答はリモート側で再び複製されます。TCPは単にすべての重複を無視するため、これはTCP接続の問題にはなりません。
重複を処理するのはソフトウェア次第なので、これはUDPパケットの問題です。たとえば、DNSクエリは、期待される2つの応答ではなく4つの応答を生成します(応答に通常の帯域幅を2回ではなく4倍使用します)。
# 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)
幸運を!