
これが私の設定です:
+--------------------+ +-------------------+ +--------------------+ | ルータ B a +-----+ ルータ+ファイアウォール C | | b ルータ D | | 10.10.10.1 ----------------------------------10.10.10.2 | | +-----+ | | +--- その他のネット | 192.168.10.1 | |192.168.2.11 +--+192.168.2.57 | +----|---------------+ +-------------------+ +--------------------+ | | +----|---------------+ +----|---------------+ |192.168.10.11 | |192.168.2.38 | |サーバー A | |クライアント E | | | | | | | | | +--------------------+ +--------------------+
- ルータ B と C には、インターネット上のパブリック IP と、192.168.10.1 ~ 192.168.2.57 用の IpSec トンネル (Racoon) があります。
- すべてのマシンはUbuntu Linuxを実行しています。
- 192.168.10.1 ~ 192.168.2.57 の間には、トンネル IP が 10.10.10.1 および 10.10.10.2 の GRE トンネルが埋め込まれています。
- トンネルは、192.168.10.0/24 ネットからルータ D の背後にある他のネットワーク (例: 192.168.3.0/24) にデータをルーティングできる必要があります。
- すべての IP は他のすべての IP に ping を実行できます。
- クライアント E がサーバー A で Web ページを開くと、TCP/IP ハンドシェイクと「GET /」がサーバー A に到達しますが、サーバー A の (大きな) 応答はクライアント E に到達せず、GRE トンネル内で失われます。
- 断片化により大きなパケットが失われると考え、インターフェース a と b の MTU を最終的に 1000 バイトまで減らしましたが、効果はありませんでした。
- インターフェースAのtcpdumpは正しいHTTPトラフィックを表示します
- インターフェース b の tcpdump では、E->A からのハンドシェイクと HTTP トラフィックが表示されますが、A->E からの大きな応答パケットは表示されません。
- ルータ+ファイアウォールCのtcpdumpでは、GREパケットがIpSecトンネルからドロップアウトし、大きなパケットが到着していないことが示されています。
- B->E からの HTTP リクエストは正常に機能します。
- D<->B間の大きなパケットはGRE経由ではなく、直接IPSecトンネル(つまり192.168.2.57インターフェース上のssh 192.168.10.1)で動作します。
- B と「more nets」間の大きなパケットは機能します (GRE トンネル経由)。
- A と E の役割を入れ替えても効果はありません。(E をサーバー、A をクライアントにしたり、反対方向の大きなパケットは機能しません。)
今、行き詰まっています。何をチェックすればよいかアドバイスはありますか? どの構成が診断に役立ちますか? どうもありがとうございます!
答え1
MSSを忘れた
1) GREトンネル1400にMTUを設定する必要があります
2) SYNパケットの場合、mssを同じサイズのmtu 1400に設定します。
Linuxの場合:
iptables -I FORWARD -i tun+ -p tcp -m tcp --tcp-flags SYN、RST SYN -j TCPMSS --set-mss 1400
答え2
デフォルトのテーブルはフィルターiptables -A FORWARD ...
なので、ルールを次のように設定すると、フィルターテーブル。他にもいくつかのテーブルとテーブルがありますマングルそのうちの 1 つです。man iptables によると、「このテーブルは特殊なパケット変更に使用されます。」
したがって、パッケージを編集するには( によって行われます-j TCPMSS --set-mss
)、マングル表の場合、ルールは次のようになります。
iptables -t mangle -A FORWARD -i tun+ -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400