Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

OpenWRT Router als OpenVPN Client - iptables routing/masquerading Problem

517 views
Skip to first unread message

sh

unread,
Jan 7, 2008, 7:08:02 PM1/7/08
to
Hallo,

habe dasselbe Problem wie unter
http://groups.google.de/group/at.linux/browse_thread/thread/53034e1968e37726/31977eb61be03686?hl=de&lnk=st&q=OpenWRT+%2B+OpenVPN+als+Client#31977eb61be03686

Ich will meinen Netzwerkrouter - eine WRTG54GS - auf dem OpenWRT läuft
als VPN Client verwenden, um damit
transparent eine VPN Verbindung in ein Firmennetzwerk für alle Rechner
bei mir im LAN zur Verfügung zu stellen.

<Mein Netzwerk, 192.168.2.0/24> --- [OpenWRT mit OpenVPN, intern
192.168.2.1] <---- INTERNET ----> [openSuSE 10.x, OpenVPN Server] ----
Firmennetzwerk 192.168.1.0/24>

VPN läuft über das device tap0 und als Transfernetz wird 10.0.0.0/24
verwendet.


Ich kann von einem PC im Subnet 192.168.2.0/24 weder den OpenVPN
Server
noch das Subnet dahinter (192.168.1.0/24) erreichen. Anmerkung: Der
WRT
dient u.a. auch als Firewall/NAT Router fuer das 192.168.2.0 / 24
Subnet.

Die OpenVPN Verbindung ist korrekt aufgebaut und ich kann vom WRT
(VPNClient)
den OpenVPN Server sowie beide Subnetze dahinter pingen:

/etc $ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: icmp_seq=0 ttl=64 time=68.3 ms
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=70.4 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=68.7 ms

/etc $ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=253 time=72.6 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=253 time=70.0 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=253 time=69.4 ms


Die Route dem WRT sieht gut aus:
/etc $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref
Use Iface
xxx.xxx.190.44 0.0.0.0 255.255.255.255 UH 0 0
0 ppp0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0
0 tap0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0
0 br0
192.168.1.0 10.0.0.1 255.255.255.0 UG 0 0
0 tap0
0.0.0.0 xxx.xxx.190.44 0.0.0.0 UG 0 0
0 ppp0

Ich kann vom VPNServer auch den Client anpingen:
xxx@vpnserver:~> ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=73.9 ms


Wie im refernzierten Beitrag vorgeschlagen habe ich bereits die
Einträge für die FORWARD Chain gemacht:

iptables -A forwarding_rule -i tap+ -o br0 -j ACCEPT
iptables -A forwarding_rule -i br0 -o tap+ -j ACCEPT
iptables -A input_rule -i tap+ -j ACCEPT
iptables -A output_rule -o tap+ -j ACCEPT


Ausgabe meiner iptables...
/etc $ iptables -vnL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source
destination
0 0 DROP all -- * * 0.0.0.0/0
0.0.0.0/0 state INVALID
2188 138K ACCEPT all -- * * 0.0.0.0/0
0.0.0.0/0 state RELATED,ESTABLISHED
1 40 DROP tcp -- * * 0.0.0.0/0
0.0.0.0/0 tcp option=!2 flags:0x02/0x02
81 8933 input_rule all -- * * 0.0.0.0/0
0.0.0.0/0
31 2560 input_wan all -- ppp0 * 0.0.0.0/0
0.0.0.0/0
44 4481 LAN_ACCEPT all -- * * 0.0.0.0/0
0.0.0.0/0
0 0 ACCEPT icmp -- * * 0.0.0.0/0
0.0.0.0/0
0 0 ACCEPT 47 -- * * 0.0.0.0/0
0.0.0.0/0
27 1328 REJECT tcp -- * * 0.0.0.0/0
0.0.0.0/0 reject-with tcp-reset
4 1232 REJECT all -- * * 0.0.0.0/0
0.0.0.0/0 reject-with icmp-port-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source
destination
0 0 DROP all -- * * 0.0.0.0/0
0.0.0.0/0 state INVALID
476 22608 TCPMSS tcp -- * * 0.0.0.0/0
0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
335K 164M ACCEPT all -- * * 0.0.0.0/0
0.0.0.0/0 state RELATED,ESTABLISHED
624 34480 forwarding_rule all -- * *
0.0.0.0/0 0.0.0.0/0
0 0 forwarding_wan all -- ppp0 *
0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- br0 br0 0.0.0.0/0
0.0.0.0/0
244 11680 ACCEPT all -- br0 ppp0 0.0.0.0/0
0.0.0.0/0

Chain LAN_ACCEPT (1 references)
pkts bytes target prot opt in out source
destination
31 2560 RETURN all -- ppp0 * 0.0.0.0/0
0.0.0.0/0
0 0 RETURN all -- vlan1 * 0.0.0.0/0
0.0.0.0/0
13 1921 ACCEPT all -- * * 0.0.0.0/0
0.0.0.0/0

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source
destination
0 0 DROP all -- * * 0.0.0.0/0
0.0.0.0/0 state INVALID
2119 749K ACCEPT all -- * * 0.0.0.0/0
0.0.0.0/0 state RELATED,ESTABLISHED
132 11008 output_rule all -- * * 0.0.0.0/0
0.0.0.0/0
7 508 ACCEPT all -- * * 0.0.0.0/0
0.0.0.0/0
0 0 REJECT tcp -- * * 0.0.0.0/0
0.0.0.0/0 reject-with tcp-reset
0 0 REJECT all -- * * 0.0.0.0/0
0.0.0.0/0 reject-with icmp-port-unreachable

Chain forwarding_rule (1 references)
pkts bytes target prot opt in out source
destination
0 0 ACCEPT all -- tap+ br0 0.0.0.0/0
0.0.0.0/0
380 22800 ACCEPT all -- br0 tap+ 0.0.0.0/0
0.0.0.0/0

Chain forwarding_wan (1 references)
pkts bytes target prot opt in out source
destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0
192.168.2.2 tcp dpt:4662
0 0 ACCEPT udp -- * * 0.0.0.0/0
192.168.2.2 udp dpt:4672

Chain input_rule (1 references)
pkts bytes target prot opt in out source
destination
37 4452 ACCEPT all -- tap+ * 0.0.0.0/0
0.0.0.0/0

Chain input_wan (1 references)
pkts bytes target prot opt in out source
destination

Chain output_rule (1 references)
pkts bytes target prot opt in out source
destination
125 10500 ACCEPT all -- * tap+ 0.0.0.0/0
0.0.0.0/0


Suche mir schon seit einigen Stunden die Finger wund und bin auch
nicht wirklich kein iptables Kenner ;-) ...
Hat irgendjemand eine Idee?

Wolfgang Karall

unread,
Jan 8, 2008, 1:56:47 AM1/8/08
to
On 2008-01-08 00:08:02, sh <sepp_...@gmx.de> wrote:
> Chain forwarding_rule (1 references)
> pkts bytes target prot opt in out source
> destination
> 0 0 ACCEPT all -- tap+ br0 0.0.0.0/0
> 0.0.0.0/0
> 380 22800 ACCEPT all -- br0 tap+ 0.0.0.0/0
> 0.0.0.0/0

Weiss der VPN-Server um dein 192.168.1.0er Netz, sprich wie sieht dort
die Routing-Tabelle aus? (weil das sieht nach "Antwort gehen ueber
Default Gateway des Servers ins Nirvana" aus)

lg
WK
--
______________________________________________________________________
Wolfgang Karall mailto: wolfgan...@spiney.org GPG: 0x172CC057
GPGKey fingerprint: F11F 50F8 96B7 C8B5 6D25 AEDE BA1C 0955 172C C057
- Student of Computer Science at the Vienna University of Technology -

Quaritsch Markus

unread,
Jan 8, 2008, 2:04:10 AM1/8/08
to
Hallo sh,

sh schrieb 'OpenWRT Router als OpenVPN Client - iptables routing/masquerading Problem':


> Ich will meinen Netzwerkrouter - eine WRTG54GS - auf dem OpenWRT läuft
> als VPN Client verwenden, um damit
> transparent eine VPN Verbindung in ein Firmennetzwerk für alle Rechner
> bei mir im LAN zur Verfügung zu stellen.

[snip]

> Suche mir schon seit einigen Stunden die Finger wund und bin auch
> nicht wirklich kein iptables Kenner ;-) ...
> Hat irgendjemand eine Idee?

Da du ja vom WRT den Server pingen kannst (und auch umgekehrt), scheint
der Tunnel an sich ja zu funktionieren.

Da du es nicht explizit geschrieben hast: in der OpenVPN-Konfiguration
am Server hast du eingestelt, dass sich hinter dem OpenWRT noch ein
Client-Netz befindet? Siehe OpenVPN-Doku: http://openvpn.net/howto.html#scope
(Including multiple machines on the client side...)

lg
quam
--
| .''`. | Markus Quaritsch |
| : :' : | <qu...@qwws.net> Institute for Technical Informatics |
| `. `' | Graz University of Technology, Austria |
| `- | Calculating in binary code is as easy as 01,10,11. |

sh

unread,
Jan 8, 2008, 5:17:48 AM1/8/08
to
On 8 Jan., 08:04, Quaritsch Markus <q...@qwws.net> wrote:

>
> Da du ja vom WRT den Server pingen kannst (und auch umgekehrt), scheint
> der Tunnel an sich ja zu funktionieren.
>
> Da du es nicht explizit geschrieben hast: in der OpenVPN-Konfiguration
> am Server hast du eingestelt, dass sich hinter dem OpenWRT noch ein
> Client-Netz befindet? Siehe OpenVPN-Doku:http://openvpn.net/howto.html#scope
> (Including multiple machines on the client side...)
>

Das "push route" habe ich nicht am Server gesetzt.
Die route ist explizit auf dem Client gesetzt die besagt dass das ganz
10er Netz und das Firmen-LAN über tap0 geroutet wird.

Destination Gateway Genmask Flags Metric Ref Use
Iface

10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0

192.168.1.0 10.0.0.1 255.255.255.0 UG 0 0 0 tap0

Der Server kennt mein Netz in seiner Routingtabelle nicht.
Die Serverkonfiiguration und die Routingtabelle kann ich
höchstwahrscheinlich nicht anpassen, da der Gateway für viele andere
User verwendet wird. Im übrigen funktioniert auch alles einwandfrei
wenn ich die Verbindung direkt von einem PC aufbaue...

Sollte es nicht so sein, dass wenn ich eine Adresse im 10er Netz z.B.
10.0.0.1 anpinge das Paket dann mit der IP Adresse des Clients
10.0.0.3 per masquerading maskiert wird, so dass über den Tunnel nur
10er Adressen laufen?

Quaritsch Markus

unread,
Jan 8, 2008, 7:07:54 AM1/8/08
to
sh schrieb 'Re: OpenWRT Router als OpenVPN Client - iptables routing/masquerading Problem':

> Das "push route" habe ich nicht am Server gesetzt.

das ist nur notwendig, wenn du auch client-to-client willst, und hinter
einem Client ein weiteres Subnetz ist. Damit wird den anderen Clients
mitgeteilt, wie sie dein subnetz erreichen - also nur bedingt notwendig.
Interessanter waeren die anderen beiden Optionen, 'iroute' im 'ccd'
Verzeichnis sowie 'route' - hast du die gesetzt?

> Die route ist explizit auf dem Client gesetzt die besagt dass das ganz
> 10er Netz und das Firmen-LAN über tap0 geroutet wird.

...


> Der Server kennt mein Netz in seiner Routingtabelle nicht.

Ich vermute daher, dass zwar die Pakete aus deinem LAN den Server
erreichen, dieser aber keine Ahnung hat, wie er den Client erreichen
kann (fehlende Routing Informationen).

> Die Serverkonfiiguration und die Routingtabelle kann ich
> höchstwahrscheinlich nicht anpassen, da der Gateway für viele andere

Wenn du die notwendigen Rechte am Server hast, kannst du das durchaus
fuer jeden User/Client getrennt konfigurieren. Hast du dir die von mir
in meinem letzten Posting referenzierte Stelle der OpenVPN-Doku
durchgelesen?

> User verwendet wird. Im übrigen funktioniert auch alles einwandfrei
> wenn ich die Verbindung direkt von einem PC aufbaue...

Und dabei hat dann dein PC eine IP aus dem 10er bereich und der Server
hat die entsprechende Routing-Information.

> Sollte es nicht so sein, dass wenn ich eine Adresse im 10er Netz z.B.
> 10.0.0.1 anpinge das Paket dann mit der IP Adresse des Clients
> 10.0.0.3 per masquerading maskiert wird, so dass über den Tunnel nur
> 10er Adressen laufen?

Normalerweise nicht.

Kannst du mal deine Konfiguration von Server und Client posten?

lg
quam
--
| .''`. | Markus Quaritsch |
| : :' : | <qu...@qwws.net> Institute for Technical Informatics |
| `. `' | Graz University of Technology, Austria |

| `- | Never trust a man who can count to 1023 on his fingers. |

sh

unread,
Jan 8, 2008, 9:01:30 AM1/8/08
to
On 8 Jan., 13:07, Quaritsch Markus <q...@qwws.net> wrote:

> > Sollte es nicht so sein, dass wenn ich eine Adresse im 10er Netz z.B.
> > 10.0.0.1 anpinge das Paket dann mit der IP Adresse des Clients
> > 10.0.0.3 per masquerading maskiert wird, so dass über den Tunnel nur
> > 10er Adressen laufen?
>
> Normalerweise nicht.
>

Mit masquerading kann man das nicht so konfigurieren?
Der Weg zurück würde dann nicht funktionieren, ist aber auch nicht
notwendig...

> Kannst du mal deine Konfiguration von Server und Client posten?

Hier sind meine Konfigs ...
server:
=====
port 5557
mode server
crl-verify /root/ovpn/crl.pem
daemon
log /root/ovpn/openvpn.log
ifconfig 10.0.0.1 255.255.255.0
proto tcp-server
dev tap
client-to-client
tls-server
dh dh1024.pem
ca ca.crt
key server.key
cert server.crt
ping 10
ping-restart 120
verb 4

client:
=====
port 5557
proto tcp-client
remote xxxx.xxxx.xx
#nobind
dev tap
ifconfig 10.0.0.3 255.255.255.0
tls-client
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
log /dev/null
ping 10
ping-restart 60
route 192.168.1.0 255.255.255.0 10.0.0.1
persist-tun
persist-key
link-mtu 1575

sh

unread,
Jan 8, 2008, 2:25:55 PM1/8/08
to
On 8 Jan., 15:01, sh <sepp_hu...@gmx.de> wrote:
>
> Mit masquerading kann man das nicht so konfigurieren?
> Der Weg zurück würde dann nicht funktionieren, ist aber auch nicht
> notwendig...
>

Problem gelöst mit Source-NAT:
http://www.netfilter.org/documentation/HOWTO/de/NAT-HOWTO-6.html#ss6.1

iptables -t nat -A POSTROUTING -o tap+ -j SNAT --to 10.0.0.3

Jetzt werden einfach alle Pakete die übers TAP Device gehen mit der
10.0.0.3 maskiert ...


0 new messages