次の条件を満たすために必要なサーバーおよびクライアント構成ディレクティブの最小セットは何ですか?
fragment
およびtun-mtu
ディレクティブを介して有効になっていると思います。これらのオプションを使用するオーバーヘッドは問題ではありません。 (ターゲットMTUは236)私はOpenVPNの経験が豊富なので、基本をカバーしていると確信しています。ただし、大きなMTUサイズの要件を明確にすることはできません。 VPN上のクライアントは接続でき、テスト用にTCP/IPを構成すると、do-not-fragmentと1472より大きいパケットサイズでテストをpingする場合を除いて、すべてのクライアントが相互にpingを実行できます。ログには明らかなものは何も表示されません。
以下の設定ファイルをご覧ください。
サーバー構成:
mode server
port 1195
proto udp
dev tap
tun-mtu 2360
fragment 1500
comp-lzo
max-clients 200
client-to-client
ca special-net/ca.crt
cert special-net/sn-server.crt
key special-net/sn-server.key
dh special-net/dh1024.pem
status special-net/status.log
tls-server
tls-auth ta.key 0
auth-user-pass-verify /bin/true via-env
duplicate-cn
username-as-common-name
user nobody
group nogroup
persist-key
persist-tun
verb 4
クライアント構成:
client
remote <redacted> 1195
proto udp
dev tap
tun-mtu 2360
fragment 1500
ca special-net/ca.crt
cert special-net/sn-client.crt
key special-net/sn-client.key
tls-auth special-net/ta.key 1
auth-user-pass special-net/user.txt
ns-cert-type server
nobind
user nobody
group nobody
persist-key
persist-tun
comp-lzo
verb 3
resolv-retry infinite
リスニングポストによって観察される生の802.11フレームを配布(単純なキャプチャではなく)する方法が必要です。これを実現するには、リスニングポストが各802.11フレームをそのままVPNに送信しますが、イーサネットヘッダーを前に付けます。イーサネットヘッダーは、OpenVPNが配信するイーサネットブロードキャストになります。 802.11データグラムの最大フレームサイズは2346オクテットであり、これにより、目的のMTU 2360(イーサネットヘッダー用に14バイト追加)になります。
インスピレーションは一夜にしてやってきた。 tun-mtu
ディレクティブはOpenVPNにMTUについて通知するだけであり、OpenVPNがタップデバイス自体にMTUを設定することはないようです。タップインターフェイスにMTUを手動で設定すると、VPNクライアントは、必要に応じて最大2360バイトまで断片化することなくパケットを送受信できるようになりました。
各クライアントとサーバーでip link set tap0 mtu 2360
を使用してMTUを直接設定しました。