2017-05-07 5 views
-1

Ich habe Tomcat mit Marionette installiert. Es läuft auf Standard-8080-Port. Der Tomcat-Prozess wird als Tomcat-Benutzer gestartet. Ich möchte den gesamten Datenverkehr von Port umleiten 80 bis 8080. Meine iptables-Einstellungen wie folgt aussehen:Weiterleiten von Verkehr von 80 bis 8080

Nat:

# iptables -L -t nat 
Chain PREROUTING (policy ACCEPT) 
target  prot opt source    destination   
REDIRECT tcp -- anywhere    anywhere    multiport dports http /* 099 forward port 80 to 8080 */ redir ports 8080 

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 

Standard-iptables:

# iptables -L 
Chain INPUT (policy ACCEPT) 
target  prot opt source    destination   
ACCEPT  icmp -- anywhere    anywhere    /* 000 accept all icmp */ 
ACCEPT  all -- anywhere    anywhere    /* 001 accept all to lo interface */ 
REJECT  all -- anywhere    loopback/8   /* 002 reject local traffic not on loopback interface */ reject-with icmp-port-unreachable 
ACCEPT  all -- anywhere    anywhere    /* 003 accept related established rules */ state RELATED,ESTABLISHED 
ACCEPT  tcp -- anywhere    anywhere    multiport dports ssh /* 004 accept ssh */ 
ACCEPT  tcp -- anywhere    anywhere    multiport dports http,https /* 100 allow http and https access */ 
DROP  all -- anywhere    anywhere    /* 999 drop all */ 

Chain FORWARD (policy ACCEPT) 
target  prot opt source    destination   

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination 

Ich sehe, dass netstat zeigt, dass tomcat Prozess lauscht auf Port 8080:

# netstat -tulpn | grep 80 
tcp6  0  0 :::8080     :::*     LISTEN  16273/java  
tcp6  0  0 127.0.0.1:8005   :::*     LISTEN  16273/java  
tcp6  0  0 :::8009     :::*     LISTEN  16273/java 

Scheint, als ob nichts auf Port lauscht 80 thou. telnet zu dieser Maschine auf Port 80 und 8080 Umarmungen.

Was kann ich tun, um alle Verkehr von 80 bis 8080 weiterzuleiten?

Antwort

1

Versuchen Sie folgendes:

sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 
sudo iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 

und prüfen Sie den Verkehr:

sudo tcpdump -i any -n port 80 

Wenn Sie das Paket nicht sehen können, sollten Sie externe Firewall überprüfen.

+0

Könnten Sie mir bitte sagen, warum das Setup, das ich hatte, nicht funktionierte? –

+0

Ich glaube, dein 'INPUT' Filter hat das Port 8080 Paket bei der letzten Regel 'DROP all - irgendwo irgendwo' gelöscht. Also füge ich ACCEPT-Regel an erster Stelle ein. Sie können die Übereinstimmungsregel mit 'iptables -Z und 'iptables -nv' überprüfen – thatseeyou

0

Try this:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080 

Seien Sie ziemlich sicher nicht die Regel Problem mit einer anderen Regel verursacht. Also, rein, alles reinigen, starten und testen. Wenn es funktioniert, füge deine anderen Regeln hinzu.

+0

Nein, es hat nicht geholfen. Bevor ich den Befehl ausführte, habe ich 'iptables -T nat --flush 'und' iptables --flush' ausgeführt, um iptables eine Weile zu säubern. Mit gereinigten iptables 8080 ist erreichbar, aber 80 ist immer noch nicht erreichbar. –

0

Ich habe mit diesem seit Jahren:

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 

Aber wichtig: das funktioniert nur für den Verkehr, die im Netzwerk von anderen Rechnern kommt. Das heißt, Sie können nicht, da dies testen:

curl localhost:8080 

noch

curl <<same-host-ip>>:8081 (the host that has the iptables configured) 

diese Konfiguration Sie in anderen Host sein müssen, überprüfen.

Wenn Sie Ihre Konfiguration sehen, scheint es, dass Sie keine weitere iptables-Regel benötigen.

Verwandte Themen