Wie konfiguriere ich UFW, um IP-Weiterleitung zuzulassen?

18

Ich habe UFW, OpenVPN und Virtualbox auf meinem Heimserver installiert. Ich habe ein Host-Only-Netzwerk für meine Virtual Machine-Gäste (vboxnet0) eingerichtet, dessen IP-Bereich 10.0.1.0 und dessen anderer IP-Bereich 10.0.0.0 am anderen Ende der OpenVPN-Verbindung konfiguriert ist.

Die IP-Weiterleitung ist auf dem Host konfiguriert. Wenn UFW deaktiviert ist , können sie problemlos miteinander kommunizieren. Ich möchte jedoch UFW ausführen, da dieser Host über das Internet erreichbar sein wird und ich eine gewisse Zugriffssteuerung haben möchte.

Wie kann ich UFW konfigurieren, um diese Art von Datenverkehr zuzulassen?

Ich habe verschiedene Kombinationen ausprobiert: ufw allow allow in|out on vboxnet0|tun0ohne Erfolg.

Meine UFW-Regeln sind:

root@gimli:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
Anywhere                   ALLOW       10.0.0.0/16
Anywhere on vboxnet0       ALLOW       Anywhere
Anywhere on tun0           ALLOW       Anywhere

Anywhere                   ALLOW OUT   Anywhere on vboxnet0
Anywhere                   ALLOW OUT   Anywhere on tun0

Jede Hilfe wäre sehr dankbar.

Stephen RC
quelle

Antworten:

20

Ich habe es herausgefunden.

Bearbeiten /etc/default/ufwund DEFAULT_FORWARD_POLICYauf AKZEPTIEREN setzen :

DEFAULT_FORWARD_POLICY="ACCEPT"
Stephen RC
quelle
10
Gibt es eine Möglichkeit, zuzulassen, dass nur bestimmte Ports weitergeleitet werden, ohne dass alles akzeptiert wird?
Marcus Downing
1
Ich vermute, Sie müssen ufw nach der Bearbeitung der Datei neu starten:service ufw restart
Minh Danh
10

Es ist jetzt möglich - von UFW-Manpage:

Regeln für Datenverkehr, der nicht für den Host selbst bestimmt ist, sondern für Datenverkehr, der über die Firewall weitergeleitet werden soll, sollten das Schlüsselwort route vor der Regel angeben (Routing-Regeln unterscheiden sich erheblich von der PF-Syntax und berücksichtigen stattdessen die Konventionen der netfilter FORWARD-Kette). . Beispielsweise:

     ufw route allow in on eth1 out on eth2

Auf diese Weise kann der gesamte an eth2 geroutete und an eth1 eingehende Datenverkehr die Firewall durchqueren.

     ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

Diese Regel ermöglicht es allen Paketen, die auf eth0 eingehen, die Firewall auf eth1 zu TCP-Port 80 am 12.34.45.67 zu durchqueren.

Zusätzlich zu den Routing-Regeln und -Richtlinien müssen Sie auch die IP-Weiterleitung einrichten. Dies kann erreicht werden, indem in /etc/ufw/sysctl.conf Folgendes festgelegt wird:

     net/ipv4/ip_forward=1
     net/ipv6/conf/default/forwarding=1
     net/ipv6/conf/all/forwarding=1

Starten Sie dann die Firewall neu:

     ufw disable
     ufw enable

Beachten Sie, dass das Einstellen der Kernel-Tunables betriebssystemspezifisch ist und die Einstellungen von ufw sysctl möglicherweise überschrieben werden. Weitere Informationen finden Sie in der sysctl-Handbuchseite.

Michal Sylwester
quelle
1
Für diejenigen von uns, die TCP-Datenverkehr zwischen OpenVPN-Clients auf einem OpenVPN-Server zulassen möchten, funktioniert dies. Zum Beispiel: ufw route allow in on tun0 out on tun0
logion
Für die Aufzeichnung ufw routeist seit Version 0.34
Joril
7

Wenn Sie DEFAULT_FORWARD_POLICY in / etc / default / ufw auf ACCEPT setzen, leitet die Firewall alle Pakete unabhängig von den Einstellungen der Benutzeroberfläche weiter.

Ich denke, die Benutzeroberfläche ist nur für einfaches Ein- und Ausfiltern gedacht. Für die Weiterleitung müssen Sie iptables-Regeln in /etc/ufw/before.rules wie hier hinzufügen:

-A ufw-before-forward -i eth1 -p tcp -d 192.168.1.11 --dport 22 -j ACCEPT

Sie haben wahrscheinlich bereits eine Regel, die Verbindungen von innen nach außen zulässt, und eine andere, die Pakete von verwandten und eingerichteten TCP-Sitzungen wieder zulässt.

Ich bin kein Iptables-Spezialist. Ich habe sehr lange gebraucht, um das herauszufinden (mit ip6tables, aber es sollte ähnlich sein). Vielleicht ist das nicht alles, was Sie brauchen.

Beste Grüße

Jay Christnach
quelle
4

Dieser ufw Befehl hat bei mir gut funktioniert: sudo ufw default allow FORWARD

Um sicherzugehen, dass die Änderung angewendet wird: sudo service ufw restart

dcborg
quelle
Dies führt zu einem Fehler "Ungültige Syntax". In der Dokumentation heißt es, "DIRECTION ist eine eingehende, ausgehende oder geroutete".
ColinM
@ColinM das funktionierte für mich auf Xubuntu 16.04.5 LTS
baptx
FORWARDfunktioniert wie ein Alias ​​für routedauf Ubuntu
patricktokeeffe