Mehrere Routen und Gateways mit NAT

Mehrere Routen und Gateways mit NAT

Mein Setup ist ein VM-Host mit zwei Netzwerkschnittstellen, von denen ich eine als privat/intern und die andere als öffentlich verwenden möchte (die eine öffentliche Adresse auf dem Host erhält), wo die gesamte NAT-Magie für die Gastmaschinen stattfinden wird.

Zwei Schnittstellen bedeuten zwei Gateways (eines über eth0, 10.0.0.1und die gefälschte Adresse auf eth1, 2.0.0.1).

Wenn ich das Routing richtig verstanden habe, muss ich eine Routing-Tabelle für das 2.0.0.1Netzwerk mit einem eigenen Standard-Gateway einrichten. Leider kann der Datenverkehr des Gastes nicht geroutet werden, es sei denn, ich füge der Standardtabelle auf dem Host ein Standard-Gateway hinzu. Ich möchte, dass der Host dieses als Standard-Gateway verwendet 10.0.0.1, habe aber keine Ahnung, wie das geht.

Einzelheiten:

default via 2.0.0.1 dev eth1Insbesondere würde ich gerne auf dem Host loswerden , aber wenn ich es entferne, tcpdump -i vbr0sieht das nicht so gut aus (Versuch, serverfault.com von einem Gast aus im folgenden Beispiel nachzuschlagen):

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

Der Gast kann dennoch 192.168.10.1(sein Gateway) erreichen und 2.0.0.1. Darüber hinaus funktioniert 2.0.0.1die Suche nach einer Adresse (dieser Router hat auch einen DNS-Dienst) vom Gast aus, sodass das lokale Routing zu funktionieren scheint, „nur“ der Teil mit dem Standard-Gateway scheint irgendwie durcheinander zu sein.

Sollte nicht der gesamte Datenverkehr vom Gast (oder vb0) das Standard-Gateway verwenden 2.0.0.1, wie in der Routing-Tabelle „öffentlich“ definiert?


Aufstellen:

# 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

verwandte Informationen