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 wlan0
ağ 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?