iptables - 대상이 도메인인 경우 다른 나가는 IP 사용

iptables - 대상이 도메인인 경우 다른 나가는 IP 사용

두 개의 IP를 가진 가상 머신이 있습니다. 1.2.3.4 및 4.3.2.1을 가정합니다.

"ip a"를 실행하면 첫 번째로 1.2.3.4가 표시되고 두 번째로 4.3.2.1이 표시됩니다.

2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1476 qdisc noqueue state UNKNOWN group default
    link/void
    inet 127.0.0.1/32 scope host venet0
       valid_lft forever preferred_lft forever
    inet 1.2.3.4/24 brd 1.2.3.255 scope global venet0:0
       valid_lft forever preferred_lft forever
    inet 4.3.2.1/24 brd 4.3.2.255 scope global venet0:1
       valid_lft forever preferred_lft forever

내 생각에 Linux는 항상 첫 번째 IP를 사용하여 대상에 연결하려고 합니다. 무언가를 핑하면 볼 수 있고, 4.3.2.1 대신 1.2.3.4를 사용하면(ping - I 4.3 .2.1 대상).

이제 제가 사용하고 있는 애플리케이션은 ping이나 Traceroute와 같은 다른 인터페이스나 소스 IP 주소를 사용할 수 없습니다. 따라서 내 VM이 Destination1.com(IP가 아닌 도메인 이름)에 액세스하려면 1.2.3.4가 아닌 4.3.2.1을 소스 IP로 사용해야 합니다. 왜냐하면 Destination1.com과 다른 관계가 있기 때문입니다. 좋은 연결.

내 VM이 Destination2.com에 액세스하려면 소스 IP로 4.3.2.1이 아닌 1.2.3.4를 사용해야 합니다. 1.2.3.4가 4.3.2.1보다 Destination2.com에 더 잘 연결되어 있기 때문입니다.

이와 같은 iptables를 사용하여 트래픽을 다시 라우팅/전달할 수 있습니까? 그렇다면 어떻게?

답변1

하나의 NIC에 두 개의 IP 주소가 할당되어 있으므로 현재 설정은 작동하지 않습니다. 가상 머신을 라우터(또는 게이트웨이)로 전환해야 합니다. 따라서 서로 다른 서브넷에 고유한 IP 주소가 있는 네트워크 인터페이스 카드를 두 개 이상 가상 머신에 할당해야 합니다. (비네트 0= 1.2.3.4/24 및wenet1= 예: 4.3.2.1/24)

먼저 Linux VM에서 IP 전달을 활성화합니다.

$ sudo echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
$ sudo sysctl -p

라우팅 테이블은 네트워크 계층에서 작동합니다. 따라서 이 경우 호스트 이름은 적용되지 않습니다. 먼저 대상 호스트 이름을 IP 주소 또는 서브넷 범위로 변환해야 합니다. 도메인이 destination1.com범위를 소유 172.16.10.0/24하고 모든 트래픽이 인터페이스를 통해 종료되어야 한다고 가정합니다.비네트 0:

$ sudo ip route add 172.16.10.0/24 dev venet0

도메인이 destination2.com범위를 소유 192.168.20.0/24하고 트래픽이 인터페이스를 통해 종료되어야 하지만wenet1

$ sudo ip route add 192.168.20.0/24 dev venet1

구성에 만족하면 다음을 고려하십시오.지속적인 라우팅.

관련 정보