Sorum temel olarak, sadece belirli arayüzlerde belirli giden trafiğe izin vermekle aynıdır .
İki arabirim eth1(10.0.0.2) ve wlan0(192.168.0.2) var. Varsayılan rotam şunun için eth1. Diyelim ki tüm https trafiğinin üzerinden geçmesini istiyorum wlan0. Şimdi, diğer soruda önerilen çözümü kullanırsam, https trafiği geçecek wlan0, ancak yine de kaynak adresi eth1(10.0.0.2) olacak. Bu adres wlan0ağ geçidi için rutin olmadığından , cevaplar bir daha geri gelmez. Kolay yol, uygulamada bind-addr işlevini doğru ayarlamaktır, ancak bu durumda geçerli değildir.
Src-addr'yi yeniden yazmam gerektiğini düşünüyorum:
# 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
Şimdi tcpdump giden paketlerin sadece iyi olduğunu ve gelen paketlerin 192.168.0.2'ye ulaştığını görüyor, ancak uygulamada hiçbir zaman bitmeyecekler, çünkü SYN- ACK zaten alındı.
Bu yüzden, belki gelen adresi de tekrar yazmam gerekebilir diye düşündüm:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
ama bu da işe yaramadı. Yani burada biraz sıkışıp kaldım. Baska öneri?