devil77c
Goto Top

RaspberryPi VPN-Client-Router

Hallo, ich habe ein kleines Problem.

ich suche nach nach einer lösung mittels IPTables. Folgender aufbau


statische ip:


83.12.x.a ---------

83.12.x.b --------- vpnserver --------- Tunnel pppx --------- Raspberry --------- LAN

83.12.x.c ---------

der tunnel besteht aus pptp (openvpn in arbeit) und ser server hat die ip 10.0.10.1 der raspi hat die 10.0.10.100.
wie sehen die IPTABLES-Zeilen auf denm Server aus und natürlich auch auf den Raspi???


Mit freundlichen Grüßen,
Rothe Christof

Content-Key: 232823

Url: https://administrator.de/contentid/232823

Printed on: April 18, 2024 at 08:04 o'clock

Member: SlainteMhath
SlainteMhath Mar 17, 2014 at 16:06:26 (UTC)
Goto Top
Moin,

zuerst: Deine ! und ? Tasten scheinen zu hängen...

Was genau sollen denn die iptables Regeln tun? Allen Traffic durchlassen? Portforwarding? Paar mehr infos dürfens schon sein.

lg,
Slainte
Member: devil77c
devil77c Mar 17, 2014 at 16:21:11 (UTC)
Goto Top
kann sein, brauche mal ne neue tastatur, hihi

also von der sache her möchte ich meinem dls-anschluss eine statische ip verpassen.

ich habe einen ubuntu 20.04 server mit 4 ip-adressen die jeweils igre daten durch einen raspi schicken sollen.

quasi 2x nat in beide richtungen. sämtliche ports in beide richtungen
wichtig ist lediglich das es über einen vpntunnel gehen muss (raspi immer ppp0)
Member: SlainteMhath
SlainteMhath Mar 17, 2014 at 16:49:34 (UTC)
Goto Top
M.E. müssen die Regeln an dem Ubuntu Server gemacht werden... etwa in der Art (ggfs. noch das Interface anpassen)

iptables -t nat -A POSTROUTING -o eth0 -s <interne Ip>  -j SNAT --to-source <externe ip>
iptables -t nat -A PREROUTING -i eth0 -d <externe ip> -j DNAT --to-destination <interne Ip>
iptables -A FORWARD -s <externe ip> -j ACCEPT
iptables -A FORWARD -d <interne Ip> -j ACCEPT
Member: devil77c
devil77c Mar 17, 2014 at 18:14:00 (UTC)
Goto Top
geht das auch mit eth0:0

muss ich da die ip vom tunnelende ( vpn-client) nehmen?
ext. IP-Adresse <-> Raspi (getunnelt)

ext. ip (eth0 - eth0:3 = 83.12.x.a, b, c, d
VPN-Server (pppx) = 10.0.10.1
VPN-Client (pppx) = 10.0.10.100
Lan (eth0) = 192.168.1.2

vpn-server Seite

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.10.100 -j SNAT --to-source 83.12.x.a
iptables -t nat -A PREROUTING -i eth0 -d 83.12.x.a -j DNAT --to-destination 10.0.10.100
iptables -A FORWARD -s 83.12.x.a -j ACCEPT
iptables -A FORWARD -d 10.0.10.100 -j ACCEPT

Raspi-Seite
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.10.1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.2 -j DNAT --to-destination 10.0.10.1
iptables -A FORWARD -s 10.0.10.1 -j ACCEPT
iptables -A FORWARD -d 192.168.1.2 -j ACCEPT

so oder ist da noch ein fehler
Member: SlainteMhath
SlainteMhath Mar 17, 2014 at 18:18:10 (UTC)
Goto Top
Auf dem Ubuntu muss du direkt die IP des internen Servers angeben, nicht die vom Raspi. Und natürlich brauchst du auf dem Ubuntu um dem Raspi entsprechende Routen...

Auf der Raspi Seite brauchst du keine NAT Regeln mehr, sondern ggfs nur ACCEPT Regeln um den Traffic von ANY zu der internen Server IP zuzulassen.

PS: 192.168.1.2? Ich dachte der interne Server ist die 10.0.10.1??
Member: devil77c
devil77c Mar 17, 2014 at 18:27:45 (UTC)
Goto Top
der raspi fungiert als router der nochmal den traffic verteilt
Member: devil77c
devil77c Mar 18, 2014, updated at Mar 19, 2014 at 17:29:43 (UTC)
Goto Top
guten morgen, also ich habe gestern abend noch meinen meinen vpn-server aufgesetzt und so sieht das aus:

eth0 Link encap:Ethernet Hardware Adresse 00:16:3c:2f:56:67
inet Adresse:85.x.x.43 Bcast:85.x.x.255 Maske:255.255.255.0
inet6-Adresse: *2f:5667/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX-Pakete:6904031 Fehler:0 Verloren:138934 Überläufe:0 Fenster:0
TX-Pakete:13661 Fehler:0 Verloren:0 Überläufe:0 Träger:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX-Bytes:324391172 (324.3 MB) TX-Bytes:2052447 (2.0 MB)
Interrupt:10 Basisadresse:0x2000

eth0:1 Link encap:Ethernet Hardware Adresse 00:16:3c:2f:56:67
inet Adresse:85.x.x.49 Bcast:85.x.x.255 Maske:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
Interrupt:10 Basisadresse:0x2000

eth0:2 Link encap:Ethernet Hardware Adresse 00:16:3c:2f:56:67
inet Adresse:85.x.x.50 Bcast:85.x.x.255 Maske:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
Interrupt:10 Basisadresse:0x2000

eth0:3 Link encap:Ethernet Hardware Adresse 00:16:3c:2f:56:67
inet Adresse:85.x.x.51 Bcast:85.x.x.255 Maske:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
Interrupt:10 Basisadresse:0x2000

lo Link encap:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine
UP LOOPBACK RUNNING MTU:16436 Metrik:1
RX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
TX-Pakete:0 Fehler:0 Verloren:0 Überläufe:0 Träger:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX-Bytes:0 (0.0 B) TX-Bytes:0 (0.0 B)

ppp1 Link encap:Punkt-zu-Punkt-Verbindung
inet Adresse:10.0.10.1 P-z-P:10.0.10.100 Maske:255.255.255.255
UP PUNKTZUPUNKT RUNNING NOARP MULTICAST MTU:1496 Metrik:1
RX-Pakete:5 Fehler:0 Verloren:0 Überläufe:0 Fenster:0
TX-Pakete:5 Fehler:0 Verloren:0 Überläufe:0 Träger:0
Kollisionen:0 Sendewarteschlangenlänge:3
RX-Bytes:68 (68.0 B) TX-Bytes:62 (62.0 B)

die ip´s sind alle pingbar und auch per vhost ereichbar.
nun will ich den gesamten traffic (alles, tcp udp icmp ...) von der 85.x.x.51 (eth0:3) an den vpn-entpunkt 10.0.10.100 weiterleiten.
der traffic sollte natürlich in beide richtungen funtionieren. der ausgehende traffic sollte dann auch über die 85.x.x.51 idetifiziert werden.

ich bin am verzweifeln

danke
Member: SlainteMhath
SlainteMhath Mar 18, 2014 at 07:20:51 (UTC)
Goto Top
Wie sehen

1) die Routen
2) die iptables Regeln

auf den beteiligten Geräten aus?
Member: devil77c
devil77c Mar 19, 2014 updated at 18:49:47 (UTC)
Goto Top
so, die portweiterleitung zum raspi ist schonmal online
alle anfragen an die ip 85.xx.49 an die ports 1-10000 werden umgeleitet.

leider läuft fie weiterleitung auf dem raspi nicht, uch denke da pass was mit dem MASQUERADE nicht.


#!/bin/sh

  1. 1 Iptables
FW="/sbin/iptables"

  1. 2 vorhandene Regeln & Ketten löschen
$FW -F
$FW -X
$FW -t nat -F

  1. 3 Standardregeln
$FW -P INPUT ACCEPT
$FW -P FORWARD ACCEPT
$FW -P OUTPUT ACCEPT

$FW -t nat -A PREROUTING -d 85.93.17.49 -p tcp -m multiport --dports 1:10000 -j DNAT --to-destination 10.0.10.100
$FW -t nat -A POSTROUTING -p tcp -m multiport --dports 1:10000 -j MASQUERADE

$FW -A FORWARD -o ppp0 -s 10.0.10.100 -m conntrack --ctstate NEW -j ACCEPT
$FW -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$FW -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

exit 0

das routing auf dem server ist so!!!

root@vpn1:/etc# route
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default 85.xx.1 0.0.0.0 UG 100 0 0 eth0
10.0.10.100 * 255.255.255.255 UH 0 0 0 ppp1
85.xx.0 * 255.255.255.0 U 0 0 0 eth0
Member: SlainteMhath
SlainteMhath Mar 20, 2014 at 07:12:52 (UTC)
Goto Top
Warum machst du da überhaupt Masquerading? Das Umsetzen der IP Adressen passiert auf dem öffentlichen Server mit dem 1:1 NAT, alle anderen Geräte brauchen dann lediglich die korrekten Routen.