
次のようなシナリオがありました。
Ubuntu サーバー 20.04 lts。簡単に言うと、次のネットワーク インターフェイスを持つサーバーという名前です。
- ループバック
- enp1s0 (wan) パブリックIP/23
- enp8s0 (lan) 10.9.96.3/20
- ppp0 (l2tp) 192.168.42.1
このルーティング テーブルでは (パブリック ルートは意図的に省略されています)、
- 10.9.96.0/20 dev enp8s0 proto カーネル スコープ リンク src 10.9.96.3
- 192.168.1.0/24 経由 192.168.42.10 dev ppp0
- 192.168.42.10 dev ppp0 proto カーネル スコープ リンク src 192.168.42.1
IP 192.168.42.10 に接続されたリモート VPN クライアントがあります。
このクライアントは、リモート LAN ネットワーク 192.168.1.0/24 を提供する MikroTik ルーターです。
私が追加した静的ルート (192.168.42.10 dev ppp0 経由の 192.168.1.0/24) を使用すると、192.168.1.0/24 デバイスにアクセスできます。
別の Ubuntu サーバー 20.04 lts (簡単に言うと B サーバーという名前) には、次のネットワーク インターフェイスがあります。
- ループバック
- enp1s0 (wan) パブリックIP/23
- enp8s0 (lan) 10.9.96.4/20
このルーティング テーブル (パブリック ルートは意図的に省略されています) は次のとおりです。
- 10.9.96.0/20 dev enp8s0 proto カーネル スコープ リンク src 10.9.96.4
基本的に、サーバー B から 192.168.1.0/24 デバイスにアクセスする必要がありますが、うまくいきません。このサーバー内で
10.9.96.3 dev enp8s0 経由で 192.168.1.0/24 という静的ルートを追加しようとしました
が、成功しませんでした。192.168.1.X 宛てのパケットがサーバー A に到達しているのがわかりますが、ppp0 インターフェイスに転送されないようです (そのため、iptables ルールもいくつか試しました)
この問題を解決するにはどうすればよいですか?
両方のサーバーでファイアウォールが無効になっています。
答え1
注記: この回答では、ネットワークは100.64.10.0/23
パブリック ネットワークを表します。これは特に関連性はありませんが、これらの仮想ノードのネットワーク構成を質問で説明したものと一致させるためだけに存在します。
問題は、192.168.1.0/24 ネットワーク上のホストが 10.9.96.0/20 ネットワークに到達する方法を知らないことです。
質問で示された内容に基づくと、microtik ルーター (192.168.42.10/192.168.1.1) のルーティング テーブルはおそらく次のようになります。
192.168.1.0/24 dev h1-eth0 proto kernel scope link src 192.168.1.1
192.168.42.0/24 dev h1-eth1 proto kernel scope link src 192.168.42.10
serverA のルーティング テーブルは次のようになります。
default via 100.64.10.1 dev serverA-eth0
10.9.96.0/20 dev serverA-eth1 proto kernel scope link src 10.9.96.3
100.64.10.0/23 dev serverA-eth0 proto kernel scope link src 100.64.10.10
192.168.1.0/24 via 192.168.42.10 dev serverA-eth2
192.168.42.0/24 dev serverA-eth2 proto kernel scope link src 192.168.42.1
でserverA
、ネットワーク上のアドレスに ping を実行すると192.168.1.0/24
、送信元アドレスは になります192.168.42.1
。microtik ルーターにはそのネットワークへのルートがあるため、すべて正常です。
serverB
次のようなルーティング テーブルがある場合:
default via 100.64.10.1 dev serverB-eth0
10.9.96.0/20 dev serverB-eth1 proto kernel scope link src 10.9.96.4
100.64.10.0/23 dev serverB-eth0 proto kernel scope link src 100.64.10.20
192.168.1.0/24 via 10.9.96.3 dev serverB-eth1
その後、ネットワーク上のアドレスに接続しようとすると192.168.1.0/24
、送信元アドレスは になります10.9.96.4
。microtik ルーターはそのアドレスに到達する方法を知りません (または、デフォルト ゲートウェイ経由で応答しようとしますが、これは不適切です)。
解決策は、次のように microtik ルーターにルートを追加することです。
ip route add 10.9.96.0/20 via 192.168.42.1
今:
- MicrotikルータにはServerBへの有効なルートがあるため、ServerBはMicrotikルータにpingを送信できます。
- サーバーBはpingできる他の
192.168.1.0/24
これらのホストは、デフォルト ゲートウェイとして microtik ルーター ( ) を使用しているため、ネットワーク上のホストには接続できません192.168.1.1
。また、前の箇条書きで説明したように、ルーターには適切なルートがあります。
私はこれらすべてを、以下の方法で構築したシミュレートされたネットワーク環境でテストしました。ミニネット; 設定はここ興味があれば。