전달된 패킷의 경로가 나가는 패킷의 경로와 다릅니다.

전달된 패킷의 경로가 나가는 패킷의 경로와 다릅니다.

나는 특정 소스로부터 SRCNAT(구체적으로 MASQUERADE) 패킷을 전달하기 위해 iptables를 사용하고 있습니다. 나가는 패킷(이 컴퓨터에서 시작됨)을 전달된 패킷(다른 기본 경로)과 다르게 라우팅하고 싶습니다. 어떻게 해야 하나요?

답변1

한 가지 방법은 iptables에 트래픽을 표시하고 정책 라우팅을 사용하여 아웃바운드 경로를 일치시키는 것입니다.

당신이 가지고 있다고 가정게이트웨이 1그리고게이트웨이 2같은 LAN에...

ip route flush table 3
ip route add table 3 <lan net>
ip route add default via <gateway1>

ip route flush table 4
ip route add table 4 <lan net>
ip route add default via <gateway2>

iptables에 트래픽을 표시합니다.

iptables -t mangle -A PREROUTING   -s 10.0.0.0/24 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING   -s 10.1.0.0/24 -j MARK --set-mark 4

소스 주소, 대상 주소 또는 포트 등 원하는 것을 일치시킬 수 있습니다.

동적 게이트웨이 IP에 의존하지 않고 iptables에서 소스 IP를 명시적으로 다시 작성하므로 MASQUERADE 대신 SNAT를 사용할 수 있습니다. 바라보다SNAT와 MASQUERADE의 차이점

답변2

/etc/sysctl.conf를 편집하고 "net.ipv4.ip_forward" 옵션을 추가/편집합니다.

net.ipv4.ip_forward=1

즉시 변경하려면 다음을 실행하세요.

sysctl net.ipv4.ip_forward=1

iptables 규칙:

iptables -A FORWARD -i input_dev -j ACCEPT
iptables -t nat -A POSTROUTING -o output_dev --src src_ip -j MASQUERADE

관련 정보