목적지에 따라 다양한 인터페이스를 통해 트래픽 라우팅

목적지에 따라 다양한 인터페이스를 통해 트래픽 라우팅

저는 iptables와 라우팅 작업을 하고 있습니다.

그래서 저는 eth0(192.168.2.100, gw 192.168.2.1)과 tun0(10.7.7.2, gw 10.7.7.1)의 2개 인터페이스가 있는 Ubuntu 시스템을 가지고 있습니다.
트래픽이 tun0(10.7.7.1)을 통해 ifconfig.me에 도달하고 eth0(192.168.2.1)을 통해 ipinfo.io에 도달하기를 원합니다.

그래서 나는 이렇게 했습니다:

다음 위치에 새 항목을 만들었습니다 /etc/iproute2/rt_tables.

echo 1 vpn >> /etc/iproute2/rt_tables

그런 다음 새 테이블에 기본 경로를 추가했습니다.

ip route add default via 10.7.7.1 dev tun0 table vpn

Makr 1이 포함된 모든 패킷이 테이블 VPN을 통해 라우팅되도록 규칙을 추가했습니다.

ip rule add fwmark 0x1 table vpn

태그 1을 사용하여 ifconfig.me로 나가는 모든 트래픽에 태그를 지정합니다.

iptables -A OUTPUT -t mangle -d ifconfig.me -j MARK --set-mark 1

ipinfo.io에 접속하면 curl ipinfo.ioeth0에서 제공하는 게이트웨이를 구성하는 올바른 IP를 얻지만 ifconfig.me에서 응답을 얻으려고 하면 curl ifconfig.me아무 일도 일어나지 않습니다(시간이 초과된 것 같습니다). 따라서 트래픽이 올바른 테이블을 통과하는 것처럼 보이지만 거기에서 정체됩니다.

ip route show table vpn:

default via 10.7.7.1 dev tun0

답변1

이 모든 혼란이 필요하지 않습니다. 라우팅은 대상과 게이트웨이를 기반으로 하므로 일부 트래픽이 특정 인터페이스를 통과하도록 하려면... 라우팅을 올바르게 설정하십시오.

# ifconfig thru vpn link
ip route add 153.121.72.212 via 10.7.7.1
ip route add 153.121.72.211 via 10.7.7.1
# everything else via default network
ip route add default via 192.168.2.1

관련 정보