Moje pytanie jest w zasadzie takie samo, jak zezwalaj tylko na określony ruch wychodzący na niektórych interfejsach .
Mam dwa interfejsy eth1
(10.0.0.2) i wlan0
(192.168.0.2). Moja domyślna trasa to eth1
. Powiedzmy, że chcę przejść przez cały ruch https wlan0
. Teraz, jeśli użyję rozwiązania sugerowanego w drugim pytaniu, ruch https przejdzie wlan0
, ale nadal będzie miał adres źródłowy eth1
(10.0.0.2). Ponieważ ten adres nie jest dostępny dla wlan0
bramy, odpowiedzi nigdy nie wrócą. Najłatwiejszym sposobem byłoby prawidłowe ustawienie add-binda w aplikacji, ale w tym przypadku nie ma to zastosowania.
Myślę, że muszę przepisać 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
Teraz tcpdump widzi, że wychodzące pakiety są w porządku, a pakiety przychodzące docierają do 192.168.0.2, jednak prawdopodobnie nigdy nie kończą się w aplikacji, ponieważ wszystko, co kiedykolwiek widzę, to to, że aplikacja wysyła ponownie pakiet SYN, chociaż SYN- ACK zostało już odebrane.
Pomyślałem więc, że może też muszę przepisać adres przychodzący:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
ale to też nie działało. Więc utknąłem tutaj. Jakieś sugestie?
źródło
src
opcję doip route
poleceń, aby określić poprawny adres źródłowy.POSTROUTING
SNAT
zajmie się tym.rozwiązanie Bahamata jest poprawne; Proszę jednak zauważyć, że jedynym sposobem na wykonanie tej pracy było wyłączenie rp_filter dla każdego interfejsu w systemie, nie tylko dwóch (w tym przypadku eth1 i wlan0) zaangażowanych w NATing.
(patrz WAŻNA uwaga na końcu tej strony: Advanced Routing Howto - zamieszczony tam link już nie istnieje, ale znalazłem go przez maszynę powrotną)
źródło
Jedna sugestia: zawsze należy używać
--sport
zamiast--dport
w łańcuchu wyjściowym.NAT zmieniają
dport
i to sprawi, że twoja reguła będzie niewykonalna.źródło
Myślę, że potrzebna jest poniżej:
źródło