VPCのプライベートネットワークに2つのサーバーがあり、どちらにもパブリックIPとプライベート(10.0.0.0/24)サブネットがあります。
sysctl -w net.ipv4.ip_forward=1 && iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
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にルーティングされているようです。そのため、上記のルートがある場合、応答を返すことができません。
私を正しい方向に向けてください、私はこの時点でちょっと立ち往生しています。
前もって感謝します。
「トンネルを分割」する必要があります。
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を介して送信されるため、トラフィックはパブリックアドレスを使用してホスト自体から発信されます。
注:構成を追加した後、ネットワークサービスを再起動するだけでは失敗する可能性があるため、サーバー全体を再起動する必要がある場合があります。
わかりました、私は自分自身に答えます。 openvpnサーバーはredirect-gatewayをプッシュします。 VPNテーブルを使用してトラフィックを制限するために、クライアントオプションに「route-nopull」を追加しました。ここでの説明: リダイレクトゲートウェイを無視