具有 NAT 的多个路由和网关

具有 NAT 的多个路由和网关

我的设置是一个具有两个网络接口的 VM 主机,其中一个用作私有/内部,另一个用作公共(将在主机上获取公共地址),所有到客户机的 NAT 魔法都将在此发生。

两个接口意味着两个网关(一个通过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来自 guest(或 vb0)的所有流量是否都应该使用路由表“公共”中所定义的默认网关?


设置:

# 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

相关内容