Przekazywanie połączeń od 0.0.0.0:80 do 127.0.0.1:9091

1

Próbuję ustawić przekaźnik tor.

Aby umożliwić torowi przedstawienie statycznej strony internetowej wyjaśniającej, co to jest, chcę, aby serwer nasłuchiwał na portach 80 i 443.

Aby umożliwić Torowi korzystanie z rozliczania / hibernacji (przepustowość przepustnicy po osiągnięciu limitu danych) potrzebuję procesu powiązania z> 1024 numerami portów (tak, że nieuprzywilejowany użytkownik może przyporządkować porty, jak sądzę).

Stąd moja konfiguracja Tora wygląda tak:

ORPort 443 NoListen
ORPort 127.0.0.1:9090 NoAdvertise
DirPort 80 NoListen
DirPort 127.0.0.1:9091 NoAdvertise
DirPortFrontPage /etc/tor/tor-exit-notice.html

Po uruchomieniu serwera mogę uzyskać dostęp do pliku HTML lokalnie:

$ wget 127.0.0.1:9091                                  
--2013-08-12 14:27:49--  http://127.0.0.1:9091/
Connecting to 127.0.0.1:9091... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6762 (6.6K) [text/html]
Saving to: `index.html'

100%[=============================>] 6,762       --.-K/s   in 0.005s  

2013-08-12 14:28:15 (1.21 MB/s) - `index.html' saved [6762/6762]

I porty wydają się być poprawnie otwarte:

$ sudo netstat -lnp | grep tor
tcp        0      0 127.0.0.1:9050          0.0.0.0:*               LISTEN      6328/tor        
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      6328/tor        
tcp        0      0 127.0.0.1:9091          0.0.0.0:*               LISTEN      6328/tor

Aby ostatnia część działała, gdzie przekierowano połączenia na 0.0.0.0:80 do 127.0.0.1:9091, próbowałem użyć iptables.

$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 443 -j DNAT --to-destination 127.0.0.1:9090
$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 127.0.0.1:9091
$ sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:127.0.0.1:9090
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:127.0.0.1:9091

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Ale kiedy podłączam się do zewnętrznego adresu IP na porcie 80, nie otrzymuję odpowiedzi.

Próbowałem z ip_forward zarówno włączania i wyłączania, żadne nie działa:

$ sudo sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
$ sudo sysctl net.ipv4.ip_forward=0
net.ipv4.ip_forward = 0

Próbowałem nawet MASQUERADE-ing, ale to nie działa i nie sądzę, że powinno być konieczne:

$ sudo iptables -t nat -A POSTROUTING -j MASQUERADE

Próbowałem również PREROUTING według poniższych sugestii, ale to nie działa:

$ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-port 127.0.0.1:9091
iptables v1.4.14: REDIRECT: Bad value for "--to-ports" option: "127.0.0.1:9091"
Try `iptables -h' or 'iptables --help' for more information.

Co ja robię źle?

Serwer to raspberry pi, działa wheezy z tylko wbudowanym interfejsem sieciowym podłączonym bezpośrednio do Internetu za pomocą publicznego adresu IP.

azzid
źródło

Odpowiedzi:

1

To powinno załatwić sprawę:

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 \
          -j REDIRECT --to-ports 127.0.0.1:9091
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 443 \
          -j REDIRECT --to-ports 127.0.0.1:9090
Nanzikambe
źródło
Nie wydaje się działać. iptables v1.4.14: REDIRECT: Bad value for "--to-ports" option: "127.0.0.1:9091"
azzid
Nie działało, ale zadziałało: sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --port 80 -j REDIRECT --to-porty 9030
Ihmahr