ubuntuusers.de

[OpenVPN] Standartgateway ändern

Status: Gelöst | Ubuntu-Version: Server 11.10 (Oneiric Ocelot)
Antworten |

nj0oy

Anmeldungsdatum:
3. Januar 2012

Beiträge: 22

Wohnort: Schweiz

Hallo Zusammen.

ich habe schon stundenweise gegoogelt und Konfigurationen ausprobiert. Nichts half bei meinem Problem. Ich habe ein voll funktionierendes VPN auf meinem Server eingerichtet. Also mein Server ist der VPN-Client, und der VPN-Server steht in irgendeinem Rechenzentrum. Fragt mich nicht warum ☺. Mein Server besitzt das Interface eth0 (Physikalisch) mit 192.168.5.x und nach den connecten vom VPN noch ein Interface tun0 mit einer dynamischen IP z.B. 93.xx.xx.28

Mit dem Forwarding und:

1
iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE

kann der Server auch vom LAN aus erreicht werden, wenn das VPN aktiv ist.

Vor dem connect sieht meine Routingtabelle so aus:

1
2
3
4
5
root@srv-tortuga:~# route -n
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.5.1     0.0.0.0         UG    100    0        0 eth0
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Und nach dem connect:

1
2
3
4
5
6
7
8
9
root@srv-tortuga:~# route -n
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
0.0.0.0         93.94.245.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.5.1     0.0.0.0         UG    100    0        0 eth0
80.254.79.101   192.168.5.1     255.255.255.255 UGH   0      0        0 eth0
93.94.245.0     0.0.0.0         255.255.255.128 U     0      0        0 tun0
128.0.0.0       93.94.245.1     128.0.0.0       UG    0      0        0 tun0
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Mein Problem: Aktueller Stand ist, wenn das VPN verbunden ist, dass jeder AUSGEHENDER/EINGEHENDER Traffic vom Server, über das Interface tun0 geht.

Ich möchte aber, dass der Server über tun0 erreichbar ist, der Traffic aber default über eth0 läuft.

Wie bewerkstellige ich das? Bin am verzweifeln. ☹

Vielen Dank für die Hilfe.

Zusätzliche INFO:

1
2
3
4
5
6
7
root@srv-tortuga:~# ip route show
0.0.0.0/1 via 93.94.245.1 dev tun0 
default via 192.168.5.1 dev eth0  metric 100 
80.254.79.101 via 192.168.5.1 dev eth0 
93.94.245.0/25 dev tun0  proto kernel  scope link  src 93.94.245.80 
128.0.0.0/1 via 93.94.245.1 dev tun0 
192.168.5.0/24 dev eth0  proto kernel  scope link  src 192.168.5.27 

Moderiert von tomtomtom:

Ins passende Forum verschoben. Bitte beachte die Themenstickies.

nj0oy

(Themenstarter)

Anmeldungsdatum:
3. Januar 2012

Beiträge: 22

Wohnort: Schweiz

Hab jetzt nach stunden gelöst. Wer die Lösung interessiert:

Ich habe mich auf diesen Beitrag gestützt: http://superuser.com/questions/354855/setup-routing-and-iptables-for-new-vpn-connection-to-redirect-only-ports-80

und das Skript ein bisschen edidiert, damit die Ports nicht umgeleitet werden. Ausserdem habe ich die Routingtabellen Main noch ein bisschen frisiert, damit alles passt. Main msus nach dem connect wieder auf urzustand zurückgestellt werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash

sleep 20

DEV1=eth0
IP1=192.168.5.27
GW1=192.168.5.1
TABLE1=internet
TABLE2=vpn
DEV2=tun0
IP2=`ifconfig | grep "inet Adresse:" | grep "P-z-P" | awk '{print $2}' | sed 's/:/ /g' | awk '{print $2}'`
GW2=`route -n | grep 'UG[ \t]' | grep tun0 | grep 0.0.0.0 | awk '{print $2}'`

#echo $IP1
#echo $IP2
#echo $GW1
#echo $GW2

ip route flush table $TABLE1
ip route flush table $TABLE2

ip route show table main | grep -Ev "tun0" | while read ROUTE ; do
	ip route add table $TABLE1 $ROUTE
done
ip route show table main | grep -Ev ^default | while read ROUTE ; do
#ip route show table main | while read ROUTE ; do
    #ip route add table $TABLE1 $ROUTE
    ip route add table $TABLE2 $ROUTE
done
ip route add table $TABLE1 $GW1 dev $DEV1 src $IP1
ip route add table $TABLE2 $GW2 dev $DEV2 src $IP2
ip route add table $TABLE1 default via $GW1
ip route add table $TABLE2 default via $GW2

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo 2 > /proc/sys/net/ipv4/conf/tun0/rp_filter

ip rule add from $IP1 lookup $TABLE1
ip rule add from $IP2 lookup $TABLE2
ip rule add fwmark 1 lookup $TABLE1
ip rule add fwmark 2 lookup $TABLE2

iptables -t nat -A POSTROUTING -o $DEV1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING -o $DEV2 -j SNAT --to-source $IP2

iptables -t nat -A PREROUTING           -m state --state ESTABLISHED,RELATED          -j CONNMARK --restore-mark
iptables        -A OUTPUT               -m state --state ESTABLISHED,RELATED          -j CONNMARK --restore-mark
iptables -t nat -A PREROUTING -i $DEV1  -m state --state NEW                          -j CONNMARK --set-mark 1
iptables -t nat -A PREROUTING -i $DEV2  -m state --state NEW                          -j CONNMARK --set-mark 2
iptables -t nat -A PREROUTING           -m connmark --mark 1                          -j MARK --set-mark 1
iptables -t nat -A PREROUTING           -m connmark --mark 2                          -j MARK --set-mark 2
iptables -t nat -A PREROUTING           -m state --state NEW -m connmark ! --mark 0   -j CONNMARK --save-mark


#iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport  80 -j CONNMARK --set-mark 2
#iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport 443 -j CONNMARK --set-mark 2

ip route flush table main
ip route add table main $GW1 dev eth0 src $IP1
route add default gw $GW1 eth0
#route del default
#ip route add table main default gw 192.168.5.1 eth0                                                                                        1,1       
Antworten |