내 질문은 기본적으로 특정 인터페이스에서 특정 아웃 바운드 트래픽 만 허용 과 같습니다 .
두 개의 인터페이스 eth1
(10.0.0.2)와 wlan0
(192.168.0.2)가 있습니다. 내 기본 경로는입니다 eth1
. 모든 https-traffic이 통과하기를 원한다고 가정 해 봅시다 wlan0
. 이제 다른 질문에서 제안 된 솔루션을 사용하면 https 트래픽이 통과 wlan0
하지만 여전히 소스 주소는 eth1
(10.0.0.2)입니다. 이 주소는 wlan0
게이트웨이로 라우팅 할 수 없으므로 응답이 다시 나타나지 않습니다. 쉬운 방법은 응용 프로그램에서 바인드 주소를 올바르게 설정하는 것이지만이 경우에는 적용 할 수 없습니다.
src-addr을 다시 작성해야한다고 생각합니다.
# first mark it so that iproute can route it through wlan0
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2
이제 tcpdump는 나가는 패킷이 잘 보이고 나가는 패킷이 192.168.0.2에 도달하는 것을 보았습니다. 그러나 응용 프로그램에서 끝나지 않을 것입니다. ACK가 이미 접수되었습니다.
그래서 나는 아마도 들어오는 주소를 다시 써야한다고 생각했다.
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
그러나 그것은 작동하지 않았습니다. 그래서 나는 여기에 붙어 있습니다. 어떤 제안?