Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Iptables forwarding für openvpn-Verbindung

Frage Linux Linux Netzwerk

Mitglied: Drizzt

Drizzt (Level 1) - Jetzt verbinden

27.04.2010, aktualisiert 18.10.2012, 4129 Aufrufe, 7 Kommentare, 1 Danke

Hallo zusammen,

ich muss ein wenig weiter ausholen, um mein Problem zu schildern:
Für meinen alten DSL-Zugang hatte ich eine feste IP-Adresse (T-DSL Business). Das war mir auf Dauer jedoch zu teuer, daher habe ich mir vor kurzem einen neuen DSL-Zugang schalten lassen. Außerdem habe ich ein vTunnel-Abo (openvpn), um wieder eine feste IP-Adresse nutzen zu können.

Dadurch habe ich auf meinem Debian Server nun ein neues Interface hinzubekommen (tun0). Mit meiner alten DSL-Verbindung war es mir möglich, Anfragen auf bestimmten Ports (z. B. 443) auf einen Server in meinem Netz weiterleiten (forwarden) zu lassen. Mit der neuen Leitung / dem zusätzlichen Interface kriege ich das jetzt aber irgendwie nicht mehr hin...

Noch zur Info:
Der Debian Server wählt sich direkt ins Internet ein (ppp0). Anschließend wird dann der Tunnel aufgebaut (tun0).

Meine routing-Tabelle sieht folgendermaßen aus:
01.
min_server:~# route -n 
02.
Kernel IP Routentabelle 
03.
Ziel            Router          Genmask         Flags Metric Ref    Use Iface 
04.
217.0.119.59    *               255.255.255.255 UH    0      0        0 ppp0 
05.
80.xxx.xxx.41   *               255.255.255.255 UH    0      0        0 tun0 
06.
80.xxx.xxx.248  93.217.101.230  255.255.255.255 UGH   0      0        0 ppp0 
07.
192.168.xxx.0     *               255.255.255.224 U     0      0        0 eth0 
08.
default         80.xxx.xxx.41   0.0.0.0         UG    0      0        0 tun0
Mein ifconfig zeigt mir Folgendes:
01.
eth0      Protokoll:Ethernet  Hardware Adresse xx:xx:xx:xx:xx  
02.
          inet Adresse:192.168.x.y  Bcast:192.168.x.31  Maske:255.255.255.224 
03.
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
04.
          RX packets:94127491 errors:0 dropped:0 overruns:0 frame:0 
05.
          TX packets:75411629 errors:0 dropped:0 overruns:0 carrier:0 
06.
          Kollisionen:0 Sendewarteschlangenlänge:1000  
07.
          RX bytes:3882524601 (3.6 GiB)  TX bytes:3400403615 (3.1 GiB) 
08.
 
09.
lo        Protokoll:Lokale Schleife   
10.
          inet Adresse:127.0.0.1  Maske:255.0.0.0 
11.
          UP LOOPBACK RUNNING  MTU:16436  Metric:1 
12.
          RX packets:248720 errors:0 dropped:0 overruns:0 frame:0 
13.
          TX packets:248720 errors:0 dropped:0 overruns:0 carrier:0 
14.
          Kollisionen:0 Sendewarteschlangenlänge:0  
15.
          RX bytes:63182485 (60.2 MiB)  TX bytes:63182485 (60.2 MiB) 
16.
 
17.
ppp0      Protokoll:Punkt-zu-Punkt Verbindung   
18.
          inet Adresse:93.217.101.230  P-z-P:217.0.119.59  Maske:255.255.255.255 
19.
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1492  Metric:1 
20.
          RX packets:52 errors:0 dropped:0 overruns:0 frame:0 
21.
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0 
22.
          Kollisionen:0 Sendewarteschlangenlänge:3  
23.
          RX bytes:11016 (10.7 KiB)  TX bytes:6711 (6.5 KiB) 
24.
 
25.
tun0      Protokoll:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00   
26.
          inet Adresse:80.xxx.xxx.42  P-z-P:80.xxx.xxx.41  Maske:255.255.255.255 
27.
          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1500  Metric:1 
28.
          RX packets:42 errors:0 dropped:0 overruns:0 frame:0 
29.
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0 
30.
          Kollisionen:0 Sendewarteschlangenlänge:100  
31.
          RX bytes:7410 (7.2 KiB)  TX bytes:3590 (3.5 KiB)
Die ppp0-Verbindung wird übrigens über eth1 hergestellt. Ich habe auch noch ein paar andere Interfaces weggelassen, da diese nicht für das Problem wichtig sind.

Und hier noch zu Guter letzt mein iptables-Skript:
01.
#!/bin/sh 
02.
03.
# Programs 
04.
IPT="/sbin/iptables" 
05.
 
06.
# Interfaces 
07.
INTIF="eth0" 
08.
EXTIF="ppp0" 
09.
OVPNIF="tun0" 
10.
 
11.
# Networks 
12.
LAN="192.168.x.0/27" 
13.
 
14.
# IP Adresses 
15.
INTIP=`ifconfig $INTIF | grep inet | cut -d : -f 2 | cut -d \  -f 1` 
16.
EXTIP=`ifconfig $EXTIF | grep inet | cut -d : -f 2 | cut -d \  -f 1` 
17.
OVPNIP=`ifconfig $OVPNIF | grep inet | cut -d : -f 2 | cut -d \  -f 1` 
18.
 
19.
# Share internet connection? 
20.
SHARE="yes" 
21.
 
22.
# Do you run a Web server? Caution: ports for Tomcat are opened, too! 
23.
WEB="yes" 
24.
WEBPUBLIC="yes" 
25.
SPOINT="yes" 
26.
 
27.
# Set default chain policy 
28.
$IPT -P INPUT DROP 
29.
$IPT -P FORWARD DROP 
30.
$IPT -P OUTPUT DROP 
31.
 
32.
# Flush all chains 
33.
$IPT -F 
34.
$IPT -X 
35.
$IPT -t nat -F PREROUTING 
36.
$IPT -t nat -F POSTROUTING 
37.
 
38.
# Add custom chains 
39.
$IPT -N inet-in 
40.
$IPT -N inet-out 
41.
$IPT -N lan-in 
42.
$IPT -N lan-out 
43.
$IPT -N ip_reject 
44.
 
45.
# Set egress-filtering-rules: 
46.
$IPT -A INPUT -i $EXTIF -s 127.0.0.0/8 -j DROP 
47.
$IPT -A INPUT -i $OVPNIF -s 127.0.0.0/8 -j DROP 
48.
$IPT -t nat -A PREROUTING -i $EXTIF -s 127.0.0.0/8 -j DROP 
49.
$IPT -A FORWARD -s 127.0.0.0/8 -j DROP 
50.
$IPT -A OUTPUT -s 127.0.0.1/8 -o $EXTIF -j LOG 
51.
$IPT -A OUTPUT -s 127.0.0.1/8 -o $EXTIF -j DROP 
52.
$IPT -A OUTPUT -o $EXTIF -d $EXTIP -j DROP 
53.
 
54.
# Set basic INPUT rules 
55.
$IPT -A INPUT -i lo -j ACCEPT 
56.
$IPT -A INPUT -i $EXTIF -j inet-in 
57.
$IPT -A INPUT -i $OVPNIF -j inet-in 
58.
$IPT -A ip_reject -j DROP 
59.
$IPT -A INPUT -i $INTIF -s $LAN -j lan-in 
60.
$IPT -A INPUT -m state --state NEW,INVALID -j DROP 
61.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
62.
 
63.
# Set FORWARD rules 
64.
if [ "$SHARE" = "yes" ]; then 
65.
        modprobe ip_tables 
66.
        modprobe iptable_nat 
67.
        modprobe ip_conntrack_ftp 
68.
        $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 
69.
        $IPT -A FORWARD -i $INTIF -s $LAN -m state --state NEW -j ACCEPT 
70.
        $IPT -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
71.
        echo 1 > /proc/sys/net/ipv4/ip_forward 
72.
        echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter 
73.
        $IPT -t nat -A POSTROUTING -o $EXTIF -s $LAN -j MASQUERADE 
74.
        $IPT -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP 
75.
        $IPT -t nat -A POSTROUTING -o $OVPNIF -s $LAN -j MASQUERADE 
76.
        $IPT -t nat -A POSTROUTING -o $OVPNIF -j SNAT --to $OVPNIP 
77.
fi 
78.
 
79.
## Set basic OUTPUT rules 
80.
$IPT -A OUTPUT -o lo -j ACCEPT 
81.
$IPT -A OUTPUT -o $EXTIF -j inet-out 
82.
$IPT -A OUTPUT -o $OVPNIF -j inet-out 
83.
$IPT -A OUTPUT -o $INTIF -d $LAN -j lan-out 
84.
$IPT -A OUTPUT -m state --state NEW,INVALID -j DROP 
85.
$IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
86.
 
87.
if [ "$WEB" = "yes" ]; then 
88.
        $IPT -A lan-in -p tcp --dport 80 -j ACCEPT 
89.
        $IPT -A lan-out -p tcp --sport 80 -j ACCEPT 
90.
        if [ "$WEBPUBLIC" = "yes" ]; then 
91.
       	$IPT -A inet-in -p tcp --dport 80 -j ACCEPT 
92.
	$IPT -A inet-out -p tcp --sport 80 -j ACCEPT 
93.
        fi 
94.
fi 
95.
 
96.
if [ "$SPOINT" = "yes" ]; then 
97.
	$IPT -A inet-in -p tcp --dport 443 -j ACCEPT 
98.
	$IPT -A inet-out -p tcp --sport 443 -j ACCEPT 
99.
	$IPT -A FORWARD -i $OVPNIF -p tcp --dport 443 -j ACCEPT 
100.
	$IPT -t nat -A PREROUTING -p tcp -i $OVPNIF --dport 443 -j DNAT --to-destination 192.168.a.b:443 
101.
fi
Ich sehe einfach meinen Fehler nicht, oder ist evtl. etwas an den routen falsch?!

Ins Internet komme ich mit dieser Konfiguration sowohl vom Debian Server als auch aus dem 192.168.x.y-er Netz problemlos. Ich kann mich z. B. auch per SSH mit meinem Server von außerhalb verbinden (den Teil des iptables-Skriptes habe ich weggelassen).
Das Einzige, was nicht funktioniert, ist die Weiterleitung auf interne Server.


Bitte, bitte, heflt mir!!

Drizzt
Mitglied: dog
27.04.2010 um 23:45 Uhr
Für meinen alten DSL-Zugang hatte ich eine feste IP-Adresse (T-DSL Business). Das war mir auf Dauer jedoch zu teuer, daher habe ich mir vor kurzem einen neuen DSL-Zugang schalten lassen. Außerdem habe ich ein vTunnel-Abo (openvpn), um wieder eine feste IP-Adresse nutzen zu können.

Und warum nimmst du nicht einfach einen Anbieter mit fester IP - z.B. manitu?
Bitte warten ..
Mitglied: aqui
28.04.2010, aktualisiert 18.10.2012
Ohne die openvpn Konfig ist sowieso eine Antwort schwer.... Ggf. hilft dir noch das hier:
http://www.administrator.de/wissen/openvpn-server-installieren-auf-dd-w ...
Das kommt auch mit DynDNS IPs klar und braucht durch die Push Anweisung bei OpenVPN keinerlei Forwardings !!
Bitte warten ..
Mitglied: Drizzt
28.04.2010 um 19:42 Uhr
Hallo und danke für die schnellen Antwort.

@dog:

Manitu stellt feste IP-Adressen für ADSL und SDSL-Anschlüsse zur Verfügung, aber nicht für VDSL! Außerdem kostet Manitu 5 EUR pro Monat mehr.
Ist für mich also keine Lösung. Trotzdem Danke!

@aqui:
Die Anleitung habe ich überflogen, allerdings setze ich weder die in der Anleitung verwendete Firewall ein noch habe ich selbst einen OpenVPN-Server. Mein Debian-Server ist der Client. Der OpenVPN-Server läuft auf einem vTunnel-Server.
Ich werde aber nochmal bei deren Support anfragen; vielleicht hilft's ja.

Grüße
Drizzt
Bitte warten ..
Mitglied: aqui
29.04.2010 um 12:49 Uhr
Es ging auch nicht um die HW sondern rein um die Konfig, denn die ist überall bei allen OpenVPN Installationen identisch. Deshalb sollte der Support eigentlich dein problem sofort lösen können...ist ja nur ein Push Kommando in der Konfig !
Bitte warten ..
Mitglied: Drizzt
30.04.2010 um 13:37 Uhr
Hallo nochmal,

nein, der Support konnte mein Problem bisher nicht lösen.
Ich vermute nach wie vor, dass es ein Problem mit der Firewall / den Routen gibt, dass ich nicht sehe.

Wie gesagt, die Verbindung über den Tunnel kommt einwandfrei zu stande; es wird halt nur der Traffic in mein privates Netz / aus dem Netz nicht "durchgelassen".

Sieht vielleicht jemand einen Fehler in der Konfiguration?

Grüße
Drizzt
Bitte warten ..
Mitglied: aqui
03.05.2010 um 12:54 Uhr
Wenn dem so ist dann ist es in der Tat eine reine Firewall Konfig Sache. Ggf. hast du eine Zahlendrehe in den IP Adressen drin ??
Erlaube doch erstmal schlciht alles was vom OpenVPN Client IP Netz in dein lokales Netz will.
Welche lokale OpenVPN Client IP du hast kannst du sehen wenn du bei aktiviertem OpenVPN Client einmal ipconfig eingibst !!
Diesem IP Netz musst du Zugriff auf dein lokales IP Netz in den IP Tables erlauben !!
Bitte warten ..
Mitglied: Drizzt
03.05.2010 um 17:50 Uhr
Hallo aqui,

ja, ich bin mittlerweile auch der Auffassung, dass das Problem mit den Firewall-Regeln zu tun hat, aber ein Zahlendreher kann es nicht sein, da ich die Freischaltung der IP-Adressen / das Routing über Variablen mache (siehe iptables-skript in meinem ersten Post). Die OpenVPN-IP wird in der Variablen OVPNIP gespeichert, aber ich sehe einfach den Fehler im Skript nicht...

So ein Dreck. Ich versuch's jetzt mal mit tcpdump. Mal sehen. Ob das was bringt.

Trotzdem vielen Dank für Eure Unterstützung!

Grüße
Drizzt
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Firewall
gelöst PFSense Squid Proxy über OpenVpn Verbindung nutzen (4)

Frage von horstvogel zum Thema Firewall ...

LAN, WAN, Wireless
gelöst OpenVPN Verbindung kommt nicht zustande (35)

Frage von Xandros zum Thema LAN, WAN, Wireless ...

Router & Routing
gelöst OpenVPN und PPTP Verbindung (3)

Frage von Veritas zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...