Ich habe ein Problem beim Konfigurieren von OpenVPN.
Das passiert, wenn ich verbunden bin: Ich kann den Server 192.168.42.1 vom Client 192.168.42.6 aus anpingen und umgekehrt. Ich kann auf die Lausch-Daemons auf dem Server unter 192.168.42.1 (http und DNS) zugreifen. Ich kann mit seiner Internet-IP auf den Server zugreifen, aber die Verbindung wird nicht im VPN geroutet (ich habe einen Traceroute erstellt, er läuft über meinen Heimrouter). Ich kann auf keine andere Internet-IP zugreifen (auf einem Nmap-Traceroute sehe ich nur eine Zeile mit 192.168.42.1!).
Hier ist meine OpenVPN-Serverkonfiguration:
port 443
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.42.1"
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
status openvpn-status.log
verb 4
script-security 2
push "redirect-gateway def1"
auth-user-pass-verify /home/openvpn/chroot/login.php via-file
port-share 127.0.0.1 4433
max-clients 10
daemon
Hier ist ein Teil meiner iptables-Konfiguration:
# current configuration (i removed some lines concerning other ports)
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
# lines added for OpenVPN
iptables -A FORWARD -i tun0 -o em1 -s 192.168.42.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o em1 -j MASQUERADE
Was kann ich tun? Danke für die Hilfe.
Antwort1
Aufgrund Ihrer Frage und Konfiguration gehe ich davon aus, dass Sie beabsichtigen, dem Client den Internetzugriff über den Server zu ermöglichen.
In diesem Fall scheint mir Ihre OpenVPN-Konfiguration korrekt zu sein.
Ihre Filterung ist jedoch nicht vollständig. Sie haben es so eingerichtet, dass neue Pakete von tun0 an em0 (was vermutlich die Ethernet-Verbindung auf dem Server ist) weitergeleitet werden, aber keine Folgepakete oder überhaupt Pakete von em0 an tun0. Bidirektionale Kommunikation ist für nahezu alle Internetprotokolle erforderlich.
Daher würde ich in Ihrer Konfiguration die Zeilen hinzufügen:
iptables -A FORWARD -i tun0 -o em1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i em1 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Stellen Sie außerdem sicher, dass /proc/sys/net/ipv4/ip_forward 1 enthält. Wenn nicht, führen Sie Folgendes aus:
sudo echo "1" > /proc/sys/net/ipv4/ip_forward
Abhängig von Ihrer Distribution sollte es eine Möglichkeit geben, die letzte Einstellung dauerhaft zu machen (der Befehl bewirkt, dass sie nur bis zum nächsten Neustart bestehen bleibt).