Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: Drizzt

Drizzt (Level 1) - Jetzt verbinden

27.04.2010, aktualisiert 18.10.2012, 4211 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:
https://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 ..
Ähnliche Inhalte
Router & Routing
OpenVPN und PPTP Verbindung
gelöst Frage von VeritasRouter & Routing3 Kommentare

Hallo Leute, Ich habe folgendes Problem ich habe bei mir privat eine OpenVPN Verbindung eingerichtet. Gleichzeitig habe ich noch ...

Router & Routing

LTE: statische IP über OpenVPN Server - Openwrt - Port forwarding

Frage von cypher2045Router & Routing5 Kommentare

Hallo zusammen, ich habe einen LTE Anschluss, der natürlich keine öffentliche IP hat. Um dennoch Home automation etc. betreiben ...

Server

SSH-Verbindung zum Server ohne Port-Forwarding

Frage von FeveniusServer14 Kommentare

Hallo! Ich bin momentan in folgender Situation: Rechner A befindet sich in einem Netzwerk, bei dem ich kein Port-Forwarding ...

LAN, WAN, Wireless

OpenVPN Verbindung kommt nicht zustande

gelöst Frage von XandrosLAN, WAN, Wireless35 Kommentare

Hallo zusammen, ich versuche mich via VPN von meiner Arbeit aus zu mir nach Hause einzuwählen, bekomme aber keine ...

Neue Wissensbeiträge
Rechtliche Fragen
Unitymedia siegt vor dem BGH
Information von transocean vor 19 StundenRechtliche Fragen3 Kommentare

Moin, lt. einem aktuellen Urteil darf UM Mietrouter seiner Kunden weiterhin in Hotspots verwandeln. Nachlesen kann man das hier. ...

Router & Routing
Der "768k-Day" kommt
Information von LordGurke vor 1 TagRouter & Routing2 Kommentare

Für Leute, die Router mit BGP-Fulltable betreiben vielleicht ein interessanter Hinweis: Die IPv4-Fulltable erreicht voraussichtlich innerhalb der nächsten 2-3 ...

Debian

Partition angeblich voll, dabei aber noch nicht mal zur Hälfte belegt

Anleitung von diemilz vor 2 TagenDebian8 Kommentare

Hallo zusammen, ich habe ein kleines Problem: Ich habe auf einem physischen Debian Linux Server als ZoneMinder-Server (HP ProLiant ...

Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 6 TagenWindows 73 Kommentare

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Heiß diskutierte Inhalte
HTML
Bild hochladen mit html auf die Webseite
gelöst Frage von WorldoftheitHTML63 Kommentare

Will eine Seite entwickeln im Internet aber Das Bild wird nicht angezeigt woran kann das liegen? Wäre für jede ...

Vmware
Terminalserver VM - Videos ruckeln
Frage von easyriderVmware29 Kommentare

Hallo zusammen, wir haben einen (free) ESXi 5.5 auf einem HP DL 380 G8 im Einsatz. Darauf läuft, unter ...

Festplatten, SSD, Raid
Harddisk kaputt, was sagt mir ChrystalDiskInfo
gelöst Frage von InfoSeekerFestplatten, SSD, Raid23 Kommentare

Hallo zusammen, Mein Rechner lahmt. Ich stell mir die Frage woran es liegt und bin der Meinung es ist ...

Backup
Veeam Community Edition
gelöst Frage von dgrebnerBackup23 Kommentare

Hallo Zusammen, kann jemand seine praktischen Erfahrungswerte mit der Veeam-Community Edition mit mir teilen? Es gab dazu ja schon ...