libvirt Port Forwarding

Hoeze

Lieutenant
Registriert
Juni 2010
Beiträge
707
Ich würde gerne einen Port auf einen LXC-Container umleiten.
Mein virbr0 interface sieht so aus:
Code:
<network>
  <name>default</name>
  <uuid>abcd</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0' />
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254' />
      <host mac="00:FF:AA:00:00:01" name="java.local" ip="192.168.122.101" />
    </dhcp>
  </ip>
</network>

Jetzt möchte ich den Port 1234 auf die IP 192.168.122.101 forwarden:
Code:
iptables -t nat -A PREROUTING -p udp --dport 1234 -j DNAT --to 192.168.122.101:1234
Leider funktioniert das nicht.

Unser Router hat so eine schöne einfache Portforwarding-Funktion:
Man trägt das gewünschte Gerät und die zugehörigen TCP/UDP-Ports ein => fertig.
Wieso kann das unter debian nicht genauso einfach funktionieren? :(
 
Mir fallen zwei Dinge ein, die mit deinem Problem zusammenhängen könnten:

- Hast du ip forwarding aktiviert?

Code:
cat /proc/sys/net/ipv4/ip_forward
0 = deaktiviert
1 = aktiv

- Ist die default policy der forward chain auf ACCEPT gesetzt?
Wenn nicht, mußt du in der forward chain die Pakete vom Port forwarding hier noch akzeptieren.

Für ein paar mehr Details vielleicht nochmal in der Suchmaschine deiner Wahl nach "linux iptables port forwarding" suchen.

PS:
Wieso kann das unter debian nicht genauso einfach funktionieren?
Weil Debian nicht einfach nur ein Router ist... würde doch sonst auch keinen Spaß machen ;)

Es gibt aber durchaus auch Frontends zum Erstellen von Rirewall Regeln. Firewall Builder fällt mir spontan ein, wobei ich das Tool noch nie ernsthaft benutzt habe. Ansonsten gibt es auch für webmin passende Module glaube ich.
 
Zuletzt bearbeitet:
Forwarding hab ich bereits auf 1 gesetzt.

Liegt wohl tatsächlich an der forward-Chain.
Code:
Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             192.168.122.0/24     state RELATED,ESTABLISHED
ACCEPT     all  --  192.168.122.0/24     anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere

Was müsste ich da jetzt eintragen?


EDIT:
Ich hab die forward-chain einfach mal komplett geöffnet, allerdings funktioniert es noch immer nicht.

Welche Regeln müssten existieren, um den Port 1234 von eth0 auf die IP 192.168.122.101 zu legen?
 
Zuletzt bearbeitet:
Hallo,

man braucht da mehr als 1 Regel sonst wäre es ja zu einfach :D

Code:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.122.101:1234

Code:
iptables -A FORWARD -d 192.168.122.101/32 -i eth0 -o virbr0 -p tcp -m tcp --dport 1234 -j ACCEPT

-p ist der Port in dem Fall hier noch auf tcp wenn du udp brauchst einfach ändern.

Gruß Jeffrey
 
jeffrey1253 schrieb:
Hallo,

man braucht da mehr als 1 Regel sonst wäre es ja zu einfach :D

Code:
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.122.101:1234

Code:
iptables -A FORWARD -d 192.168.122.101/32 -i eth0 -o virbr0 -p tcp -m tcp --dport 1234 -j ACCEPT

-p ist der Port in dem Fall hier noch auf tcp wenn du udp brauchst einfach ändern.

Gruß Jeffrey

Danke für deine Antwort.
Trotzde verzweifle ich so langsam...
Ich habe es exakt so durchgeführt, nur mit -p udp -m udp.
Ich habe sogar sämtliche chains geleert und auf accept gestellt.
Trotzdem bekomme ich einfach keine Verbindung :(
 
Zurück
Oben