NAT を使用した複数のルートとゲートウェイ

NAT を使用した複数のルートとゲートウェイ

私のセットアップは、2 つのネットワーク インターフェイスを備えた VM ホストで、1 つをプライベート/内部として使用し、もう 1 つをパブリック (ホスト上でパブリック アドレスを取得する) として使用して、ゲスト マシンへのすべての NAT マジックを実行することです。

2 つのインターフェースは、2 つのゲートウェイ ( 経由の 1 つとeth0, 10.0.0.1上の偽のアドレスeth1, 2.0.0.1) を意味します。

ルーティングを正しく理解していれば、独自のデフォルト ゲートウェイを持つネットワークのルーティング テーブルを設定する必要があります2.0.0.1。残念ながら、ホストのデフォルト テーブルにデフォルト ゲートウェイを追加しない限り、ゲストのトラフィックをルーティングすることはできません。ホストを10.0.0.1デフォルト ゲートウェイとして使用したいのですが、その方法がわかりません。

詳細:

具体的には、ホスト上の を削除したいのですdefault via 2.0.0.1 dev eth1が、削除すると、 がtcpdump -i vbr0あまり良くなりません (以下の例では、ゲストから serverfault.com を検索しようとしています)。

IP 192.168.10.2.32804 > 8.8.4.4.domain: 41116+ A? serverfault.com. (24)
IP 192.168.10.1 > 192.168.10.2: ICMP net 8.8.4.4 unreachable, length 60

192.168.10.1それでも、ゲストは(そのゲートウェイ) および に到達できます2.0.0.1。さらに、 を使用して2.0.0.1ゲストからアドレス (そのルータには DNS サービスもあります) を検索すると機能するため、ローカル ルーティングは機能しているように見えますが、「デフォルト ゲートウェイ部分」だけが何らかの理由で混乱しているようです。

2.0.0.1ゲスト (または vb0) からのすべてのトラフィックは、ルーティング テーブル「public」で定義されているデフォルト ゲートウェイを使用するべきではないでしょうか?


設定:

# ip route
default via 2.0.0.1 dev eth1
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.15
2.0.0.0/24 dev eth1  proto kernel  scope link  src 2.0.0.55
192.168.10.0/24 dev vbr0  proto kernel  scope link  src 192.168.10.1


# ip route show public
default via 2.0.0.1 dev eth1
2.0.0.0/24 dev eth1  scope link  src 2.0.0.55
192.168.10.0/24 dev vbr0  scope link  src 192.168.10.1


# ip rule
0:      from all lookup local
32761:  from 192.168.10.1 lookup public
32762:  from all to 192.168.10.1 lookup public
32763:  from all to 2.0.0.55 lookup public
32765:  from 2.0.0.55 lookup public
32766:  from all lookup main
32767:  from all lookup default


# iptables -vnL
Chain INPUT (policy ACCEPT 1222 packets, 91256 bytes)
 pkts bytes target     prot opt in     out     source               destination
   13   648 REJECT     all  --  *      *       0.0.0.0/0            2.0.0.55          reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 193 packets, 297K bytes)
 pkts bytes target     prot opt in     out     source               destination
  266 51860 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.10.0/24      ctstate NEW,RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 1157 packets, 149K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain LOGDROP (0 references)
 pkts bytes target     prot opt in     out     source               destination


# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 49 packets, 5494 bytes)
 pkts bytes target     prot opt in     out     source               destination
    6   360 DNAT       tcp  --  *      *       0.0.0.0/0            2.0.0.55          tcp dpt:80 to:192.168.10.2:80
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            2.0.0.55          tcp dpt:443 to:192.168.10.2:443
    1    60 DNAT       tcp  --  *      *       0.0.0.0/0            2.0.0.55          tcp dpt:22022 to:192.168.10.2:22

Chain INPUT (policy ACCEPT 24 packets, 3414 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 5 packets, 317 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 12 packets, 737 bytes)
 pkts bytes target     prot opt in     out     source               destination
    5   318 SNAT       all  --  *      *       192.168.10.2         0.0.0.0/0            to:2.0.0.55

関連情報