web-dev-qa-db-ja.com

サーバーのパブリックIPを介してインバウンドトラフィックが機能していない

VPCのプライベートネットワークに2つのサーバーがあり、どちらにもパブリックIPとプライベート(10.0.0.0/24)サブネットがあります。

  1. サーバー1はNAT(ubuntu 18.04)
  2. サーバー1には次の構成のみがあり、他には何もありません。つまり、sysctl -w net.ipv4.ip_forward=1 && iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  3. サーバー2は、発信トラフィックにNATサーバー(サーバー1)を使用する必要がある単純なサーバーです。
  4. どちらのサーバーも、プライベートネットワークにはens10インターフェースを使用し、パブリックIPにはeth0インターフェースを使用します

次のネットワーク構成を有効にし、Server 2でルーティングして、Server 1経由で発信トラフィックをルーティングしました。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address x.x.x.x #public-ip
  netmask 32

#Private network interface
auto ens10
iface ens10 inet dhcp
   post-up ip route add default via 10.0.0.1

送信トラフィックは問題なくインターネットに到達できるため、期待どおりに機能し、サーバー2のパブリックIPの代わりにNAT IPが表示されます。

しかし、パブリックIPを使用してサーバー2に接続しようとすると、つまりSSHまたは他のポートにアクセスしようとすると、応答しません。ローカルネットワーク経由でのみサーバー2にアクセスできますが。

それとは別に、ルートpost-up IP route add default via 10.0.0.1を削除するとすぐに、パブリックIPを介してServer 2に到達できますが、すべての発信トラフィックルートもプライマリインターフェイスに到達します。これは望ましくありません。

サーバー2のeth0にパケットがヒットすると、パケットはens10ゲートウェイ10.0.0.1にルーティングされているようです。そのため、上記のルートがある場合、応答を返すことができません。

私を正しい方向に向けてください、私はこの時点でちょっと立ち往生しています。

前もって感謝します。

1
Yousaf

「トンネルを分割」する必要があります。

eth0インターフェース構成の下に次のルールを追加します

auto eth0
iface eth0 inet static
  address x.x.x.x
  netmask 32
  post-up ip rule add iif lo from x.x.x.x table 123
  post-up ip route add y.y.y.y dev eth0 table 123
  post-up ip route add default via y.y.y.y table 123

(y.y.y.yはゲートウェイアドレスです)

上記のルールとルートテーブル(応答)を使用すると、送信元アドレスはeth0を介して送信されるため、トラフィックはパブリックアドレスを使用してホスト自体から発信されます。

注:構成を追加した後、ネットワークサービスを再起動するだけでは失敗する可能性があるため、サーバー全体を再起動する必要がある場合があります。

1
Tom Yan

わかりました、私は自分自身に答えます。 openvpnサーバーはredirect-gatewayをプッシュします。 VPNテーブルを使用してトラフィックを制限するために、クライアントオプションに「route-nopull」を追加しました。ここでの説明: リダイレクトゲートウェイを無視

0
Eric De Vito