OpenVPN-Portweiterleitung für SNAT oder DNAT mit Iptables?

OpenVPN-Portweiterleitung für SNAT oder DNAT mit Iptables?

Ich habe es geschafft, OpenVPN einzurichten und es dazu zu bringen, statische interne IPs an Clients auszugeben. Jetzt habe ich das Problem, dass ich versuche, jedem Client einen offenen Port zuzuweisen, da diese jetzt eine statische interne IP haben, sodass ich leicht Regeln hinzufügen kann. Ich stoße auf Probleme, wenn ich weiß, wie ich das richtig über iptables mache.

Das Beispiel für die interne statische IP-Adresse des Clients 10.8.0.10 wäre, Port 1234 weiterzuleiten.

Ich habe dies ohne Erfolg versucht. VPN verwendet UDP und Port 1194, habe aber die folgenden Regeln geändert als UDP und als TCP und beide zusammen ausprobiert. Bitte beachten Sie, dass VPN bereits funktioniert und die Masquerade-Regeln hat, aber ansonsten ist iptables leer.

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 10.8.0.10
iptables -A FORWARD -s 10.8.0.10 -p tcp --dport 1234 -j ACCEPT

Ich habe auch versucht, 10.8.0.1 als Gateway und 10.8.0.10 als Client zu verwenden, wobei alle Ports weitergeleitet werden müssen

iptables -t nat -A PREROUTING -d 10.8.0.1 -j DNAT --to-destination 10.8.0.10

Ich versuche, zwei Dinge zu erreichen: Erstens die Möglichkeit, pro Client einen Port weiterzuleiten und bei Bedarf eine statische öffentliche IP, wenn alle Ports weitergeleitet werden müssen.

openvpn server.conf

local 123.123.123.123 #- your_server_ip goes here
port 1194 #- port
proto udp #- protocol
client-config-dir /etc/openvpn/ccd
push "route 10.8.0.0 255.255.0.0"
ifconfig-pool-persist /etc/openvpn/openvpn.dhcp 30
dev tun
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push redirect-gateway def1
push dhcp-option DNS 8.8.8.8
push dhcp-option DNS 8.8.4.4
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

iptables-save:

# Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012
*nat
:PREROUTING ACCEPT [4834:503608]
:POSTROUTING ACCEPT [1000:70847]
:OUTPUT ACCEPT [1000:70847]
-A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Aug 26 14:27:12 2012
# Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012
*filter
:INPUT ACCEPT [21545:23742094]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14867:1938275]
COMMIT
# Completed on Sun Aug 26 14:27:12 2012

Antwort1

Funktioniert bei mir einwandfrei. Ein paar Dinge sollten überprüft werden:

  • Dadurch werden keine NAT-Verbindungen vom VPN-Server selbst hergestellt, hierfür benötigen Sie die Regel in der OUTPUT-Kette.
  • Ist der Client für die Weiterleitung konfiguriert?alleDatenverkehr über das VPN? Andernfalls werden die Antwortpakete möglicherweise nicht über das VPN zurückgesendet.
  • Sind Sie sicher, dass Sie die IP-Adresse der Clientseite und nicht die Serverseite der Punkt-zu-Punkt-Verbindung des Clients verwenden?
  • Sie möchten in der Regel eine bestimmte Ziel-IP zuordnen, da Sie sonst andere Verbindungen über diese Portnummer abfangen.
  • Das NATing aller Verbindungen auf 10.8.0.1 verursacht wahrscheinlich Probleme, da alle Clients den Datenverkehr über diese IP leiten.

Antwort2

-A  PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.8.0.10

ist das, was Sie suchen :)

habe das gleiche Problem selbst durchgemacht

Ich sehe und nehme an, dass Sie die CCD-Datei verwenden, um die statische interne IP zu übertragen. Wenn ja, sollte die obige Regel funktionieren, wenn sie in Ihre Iptables bearbeitet wird

verwandte Informationen