2014-05-14 27 views
7

Ich möchte ankommende Anforderungen in einem Portbereich (30000 bis 40000) an einen anderen Host auf einem anderen Portbereich (10000-20000) umleiten, der sie 1: 1 zuordnet. (30.000-10.000, 40.000-20.000 etc) Wenn der Portbereich die gleiche dh ist:Iptables leitet Portbereich an einen anderen Portbereich auf einem anderen Host weiter

iptables -t nat -I PREROUTING -p tcp -m tcp --dport 10000:20000 -j DNAT --to [local_ip]:10000-20000 

Es funktioniert perfekt. Aber wenn der anfängliche Anschlussbereich auf dem sekundären Host aus dem Portbereich unterscheidet:

iptables -t nat -I PREROUTING -p tcp -m tcp --dport 30000:40000 -j DNAT --to [local_ip]:10000-20000 

Dann statt jeden Port Mapping mit entsprechenden Port es alle ankommenden Verbindungen über die Ports 30000-40000 werden stattdessen auf die gleiche kartiert (random Ich denke) Port auf dem sekundären Host (im Moment gehen sie alle zu 13675).

Ich habe auch versucht Portumleitung zu verwenden mit

-j REDIRECT 

Ich kann das auch nicht an der Arbeit.

Wie kann ich das gleiche Verhalten vom ersten Beispiel beibehalten, um mit verschiedenen Portbereichen zu arbeiten?

Antwort

2

Nach vielen Suchen und Fragen, scheinbar Iptables kann nicht damit umgehen, nicht einmal bei der Verwendung von Pseudo-Schnittstellen.

1

Ich würde versuchen, mit xinit.d eingehende Verbindungen auf Ihrem gewünschten Port-Bereich zu akzeptieren, und es automatisch instanziieren wie netcat (nc) für jeden Tunnel, der aktiv verwendet wird.

vielleicht könnte dieser Link hilft, ist es ähnlich: https://blog.linuxnet.ch/automatic-tunnels-with-xinetd-and-netcat/ oder Executing script on receiving incoming connection with xinetd

+0

Ich denke, dies ist eine große Leistungseinbuße wäre, wenn mit etwas mehr als einer minimalen Belastung arbeiten. –

Verwandte Themen