この問題で数日目悩んでいるので絵を描いてみました(ポスト下部に)。
コンテキスト
2つの名前空間を持つVPSがあります。
- 名前空間初期化(ルート)
- カスタムネームスペース(私のクールなネームスペース)
my cool namespace
事故実験として、Wireguard(でホストされている)を介して接続されたアプリケーションのみが10.0.0.0/16サブネットのアプリケーションにアクセスし、サブネットの外部からアウトバウンド要求を行うことができることを願っています。まだパブリックインターネットにアクセスできます。
たとえば、
- WG クライアント 1 ping 10.0.0.1:8000 -> アプリケーションのロード中
- WGクライアント1 ping 1.1.1.1 - >アプリケーションのロード中
私はどんな仕事をしていますか?
を使用しているという言葉でこの言葉を始める必要があります。wg-quick
すべてのルーティングテーブルを復号化しようとした後は、ネットワークネームスペース内に固有の奇妙なことがありますが、そこまでです。
- eth0 + WGポートのUDPトラフィックを私のvethペアに転送するためのiptables dnatルールを追加しました。これにより、ピアを接続して名前空間でホストされているアプリケーションにアクセスできるようになります。ただし、クライアント(またはサーバー)から外部の世界にpingを送信することはできません。
- インターフェイスを削除すると
wg0
(wg-quick down)、外部の世界にpingを送ることができます。
これは確かにルーティングテーブルの問題であり、デフォルトのルーティングテーブルとwg-quickで構築されたwireguardルーティングとの競合である可能性が高いことを示しています。
誰かがパケットをどこに流すべきか、どこにリダイレクトするべきか、そしてこれを行うときに考慮すべきIPtablesルールの全体的な精神モデルを単純化できることを願っています。
私は学んでいるので、vethペアと一緒にこの設定を維持し、ブリッジ、チューニング/タブなどを導入したくありません。