Załóżmy, że mam sieć z serwerem kierującym wszystkie połączenia z sieci do Internetu. Jak skonfigurować iptables, aby zamiast przekierowywać połączenia przychodzące do Internetu, przekierowywał je do portu hosta lokalnego 8080. Cała pomoc jest mile widziana.
Problem polega na tym, że po prostym przekierowaniu (docelowy adres IP NAT) utracisz oryginalny docelowy adres IP. Czy chcesz skonfigurować przezroczysty serwer proxy HTTP, czy też powinien on przetwarzać inne protokoły niż HTTP?
Dzięki! Jeszcze tego nie próbowałem, ale podejrzewam, że brakowało mi polecenia przekazywania IP. I następnym razem użyj bloków kodu, a nie pogrubionych.
Eksperymentowałem z tym. System ip_forward nie jest konieczny. Jednak tutaj opcja route_localnet . Widzę teraz, że właśnie tak stwierdza odpowiedź Juana Cespedesa .
ip_forwardnie jest konieczne, ponieważ pakiet nie jest przesyłany dalej, ale jeśli nie podasz sysctl dla route_localnet(który działa tylko w jądrach> = 3,6), pakiet zostanie odrzucony przez jądro, ponieważ uważa, że jest to „marsjański”, nadchodzący z zewnątrz i posiadający adres docelowy 127.0.0.1
Nie wiedziałem o route_localnet. Tak stara szkoła i nie mogłem zrozumieć, dlaczego ip_forward nie działa (podejrzewałem, że to nie było potrzebne, ale i tak próbowało).
Upewnij się, że zapisałeś, net.ipv4.conf.all.route_localnet=1w /etc/sysctl.confprzeciwnym razie nie będzie trwały, a po ponownym uruchomieniu zmienna wróci do 0, powodując upuszczenie pakietu. Wtedy byłoby bardzo trudno zrozumieć, dlaczego teraz wszystko nie działa ... stało się ze mną. ;)
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.