Iptables - Portweiterleitung auf anderen PC im Heimnetz

Andy81

Lt. Junior Grade
Registriert
Jan. 2021
Beiträge
275
Hallo,

ich habe aktuell eine OpenVPN Verbindung mit fester IP von einem deutschen Anbieter.

Die OpenVPN-Verbindung besteht seit wenigen Wochen auf einem Server. Jetzt möchte ich die OpenVPN Verbindung von einem anderen PC herstellen lassen, und vier Ports an den "Hauptserver" weiterleiten lassen.

Allerdings scheitere ich an der Weiterleitung via Iptables.

Was muss ich in der Iptables eintragen, dass die Weiterleitung funktioniert (siehe unten fett geschriebenes)... IP Adresse durch xxx ersetzt und Port ist fiktiv.

Aktuell steht u. a. folgendes drin:
#Generated by iptables-save v1.8.7 on Mon Jan 2 04:32:51 2023
*filter
:INPUT ACCEPT [15:540]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [17:680]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-logging-allow - [0:0]
:ufw-logging-deny - [0:0]
:ufw-not-local - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-skip-to-policy-forward - [0:0]
:ufw-skip-to-policy-input - [0:0]
:ufw-skip-to-policy-output - [0:0]
:ufw-track-forward - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-user-input - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-output - [0:0]
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j DROP
-A ufw-skip-to-policy-input -j ACCEPT
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-track-input -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-input -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-user-input -s 192.168.175.0/24 -p tcp -m tcp --dport 3389 -j ACCEPT
-A ufw-user-input -s 192.168.175.0/24 -p udp -m udp --dport 3389 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 3389 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 3389 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 5900 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 5800 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 20595 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT
COMMIT
# Completed on Mon Jan 2 04:32:51 2023
# Generated by iptables-save v1.8.7 on Mon Jan 2 04:32:51 2023
*nat
:REROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:OSTROUTING ACCEPT [0:0]
--append FORWARD --protocol tcp --src xxx.xxx.xxx.xxx --sport 1000 --dst xxx.xxx.xxx.xxx --dport 1000 --jump ACCEPT
COMMIT
# Completed on Mon Jan 2 04:32:51 2023
 
Eigentlich braucht man keine Iptables dafür.

Wichtig ist, dass der Rechner, auf dem das VPN endet die Weiterleitung von IP Paketen unterstützt
Bash:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
und das es entsprechende routen gibt, damit der VPN client als auch der VPN-Server wissen, wohin mit den paketen:
Bash:
sudo ip route add 192.168.123.0/24 via 10.0.0.1 dev tun1
192.168.123.0 ist das Netz, zu dem die Verbindung hin soll, 10.0.0.1 die IP des VPN-Servers.
 
Zuletzt bearbeitet:
Der VPN-Server ist ein externer Anbieter, steht nicht bei mir zuhause. Ich baue nur die OpenVPN Verbindung zum Server auf.
Wofür steht das "tun1"? Ist das die virtuelle Netzwerkkarte der VPN-Verbindung? Dann wäre das bei mir tun0.
 
Dann musst du das konkreter beschreiben.
"Wo" steht der VPN-Server und welche "Rechte" hast du?
Welcher Rechner baut eine Verbindung zu dem Server auf und von welchem Subnetz aus?
Zu welchen Server soll zu welchem Zweck was genau weitergeleitet werden?
Wie stehen der Rechner, welcher das VPN aufbaut und der wie auch immer geartete Server, zu dem was auch immer weitergeleitet werden soll, in Verbindung?
 
Open-VPN-Server Anbieter ist internet-xs.de. Ich habe hier fertige Konfigdateien, die ich nach Anleitung auf dem Linuxserver für die Verbindung eingerichtet habe.
Rechner 1 hinter der FritzBox baut die OpenVPN-Verbindung auf (und dieser soll auch nichts anderes tun). 4 Ports die nach außen über OpenVPN offen sind, sollen dann beim Eingang von Datenverkehr auf Rechner 1 direkt auf Rechner 2 im gleichen Subnetz im Heimnetzwerk weitergeleitet werden.
Rechner 1 hat 192.168.175.2, Subnetz 255.255.255.0
Rechner 2 hat 192.168.175.3, Subnetz 255.255.255.0

Ich möchte deswegen die OpenVPN Verbindung von einem anderen Rechner aufbauen lassen, da der bisherige Rechner sonst Daten (Linuxupdates usw.) alles über die OpenVPN Verbindung sendet, anstatt über die reale Netwerkkarte bzw. "normale" VDSL Leitung.
Bei der OpenVPN Verbindung ging es vorrangig um die feste IP-Adresse. Eigentlich müssen über die OpenVPN Verbindung nur reinwärts Daten fließen, rauswärts soll`s über die normale VDSL Leitung funktionieren.

Ich hoffe, das war jetzt verständlich genug, ansonsten nochmal nachfragen bitte.
 
Andy81 schrieb:
:OSTROUTING ACCEPT [0:0]
--append FORWARD --protocol tcp --src xxx.xxx.xxx.xxx --sport 1000 --dst xxx.xxx.xxx.xxx --dport 1000 --jump ACCEPT
Ich muss gestehen, ich arbeite mich jetzt nicht durch die ganzen Regeln durch.

First shot: Oben ist ein Tippfehler, das P bei POSTROUTING vergessen?!
Die Regel(n) muss datür auf deinem VPN-Server bei deinem Anbieter ausgerollt werden, ansonsten verwirft der schon die Pakete, bevor sie an deinen Rechner1 weitergeleitet werden.
Ja, tun ist der Tunneladapter und die Nummer einfach nur ne Nummerierung. Wenn es bei dir tun0 ist, ist das auch schon ausreichend.
 
Der Fehler kommt vom Text kopieren.
Der VPN Server blockt nichts, lässt alles durch (alle Ports frei).
 
Also hast du auf dem Rechner 1 schon mal einen tcpdump -i tun0 gemacht und alle Pakete gesehen, die da rein kommen sollen?
Wenn das zutrifft...
...dann muss der Rechner 1 noch als "router" fungieren und bei ihm ankommende Pakete, die aber nicht für ihn bestimmt sind, weiterleiten anstelle sie zu verwerfen:
scooter010 schrieb:
Bash:
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
 
Zurück
Oben