나는 특정 소스로부터 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