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?
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 -
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. |
>
> 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?
> 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. |
> > 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
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 ...