Leiten Sie den Verkehr über einen VPN-Server an einen Host im Internet weiter

Leiten Sie den Verkehr über einen VPN-Server an einen Host im Internet weiter

Ich muss den Verkehr über einen VPN-Server zu einem Host im Internet weiterleiten.

Aufbau:

Computer: Ubuntu-12.04

eth0 - xxxx/24

tun0 - Inet-Adresse: 10.8.0.6 PtP: 10.8.0.5 Maske: 255.255.255.255

Es gibt einen OpenVPN-Server (Amazon):

Ubuntu-12.04

eth0 - jjjj/24

tun0 - Inet-Adresse: 10.8.0.1 PtP: 10.8.0.2 Maske: 255.255.255.255

Es gibt einen Host im Internet IP: qqqq

Ich möchte, dass der Datenverkehr zu qqqq über einen OpenVPN-Server geleitet wird. Dazu mache ich Folgendes:

iptables:

Ich markiere Pakete in der Tabelle Mangle:

sudo iptables -t mangle -A OUTPUT -d q.q.q.q -j MARK --set-mark 2

Ich sende Verkehr an qqqq throw tun0:

sudo iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source 10.8.0.6

iproute2:

Ich erstelle Tabelle "100" in /etc/iproute2/rt_tables

sudo ip rule add fwmark 2 table 100
sudo ip route add default via 10.8.0.5 table 100

tcpdump auf dem 1. Computer:

14:22:04.554399 IP 10.8.0.6 > qqqq.clodo.ru: ICMP-Echoanforderung, ID 11717, Sequenz 1, Länge 64

14:22:04.681918 IP qqqq.clodo.ru > 10.8.0.6: ICMP-Echo-Antwort, ID 11717, Sequenz 1, Länge 64

14:22:05.562577 IP 10.8.0.6 > qqqq.clodo.ru: ICMP-Echoanforderung, ID 11717, Sequenz 2, Länge 64

14:22:05.690240 IP qqqq.clodo.ru > 10.8.0.6: ICMP-Echo-Antwort, ID 11717, Sequenz 2, Länge 64

Aber es gibt keinen Ping. 2 Pakete gesendet, 0 empfangen, 100 % Paketverlust.

Antwort1

Sie müssen die Pakete nicht markieren. Für das, was Sie vorhaben, benötigen Sie Folgendes

Fügen Sie in der Serverkonfigurationsdatei Folgendes hinzu:

"push route q.q.q.q 255.255.255.255"

Das Obige leitet die Route an die Clientseite weiter, sodass der gesamte Datenverkehr, der vom Client an diese IP gesendet wird, durch den OpenVPN-Tunnel gesendet wird.

Auch auf der Serverseite müssen Sie den eingehenden Datenverkehr vom Client akzeptieren. Sie können den gesamten Datenverkehr, der vom Client-Subnetz kommt, wie folgt akzeptieren

iptables -A INPUT -s 10.8.0.0/24 -j ACCEPT

das hier könntest du auch brauchen, bin mir nicht sicher:

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

Sie müssen den eingehenden Datenverkehr vom Client zur Serverseite naten [tun Sie dies auf der Serverseite]

iptables -t nat -A POSTROUTING -d q.q.q.q -j SNAT --to-source PUBLIC_IP_OR_YOUR_VPN_SERVER

Und Sie benötigen weder iproute2 noch die Mangle-Tabelle.

Die Reihenfolge der Regeln ist wichtig, also bitte sie vor einer passenden Drop-Regel

verwandte Informationen