NAT를 사용한 다중 경로 및 게이트웨이

NAT를 사용한 다중 경로 및 게이트웨이

내 설정은 하나는 개인/내부로 사용하고 다른 하나는 공용(호스트에서 공용 주소를 얻음)으로 사용하려는 두 개의 네트워크 인터페이스가 있는 VM 호스트입니다. 여기서 게스트 컴퓨터에 대한 모든 NAT 마법이 발생합니다.

두 개의 인터페이스는 두 개의 게이트웨이(하나는 via 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

관련 정보