Tipps & Tricks: OpenVPN auf einem Router mit TomatoUSB Mod von Shibby

PP Frank

Staff member
Genau deswegen habe ich ja auch geschrieben das du die richtigen Configs laden sollst und diese möglichst nicht verändern. Ausser die Zeile auth-user-pass bei Bedarf
 

webslap

Member
ich habe alles zusammengebracht mit TCP mit dieser config:

Code:
proto tcp
tun-mtu 1500

cipher AES-256-CBC

auth SHA512
#auth-user-pass client
comp-lzo
dev tun
#float
hand-window 120
inactive 604800
mute-replay-warnings
nobind
ns-cert-type server
persist-key
persist-remote-ip
persist-tun
ping 5
ping-restart 120
redirect-gateway def1
remote-random
reneg-sec 3600
resolv-retry infinite
route-delay 2
route-method exe
script-security 2
tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
tls-timeout 5
verb 4

ca /jffs/openvpn/tcp/ca.crt
cert /jffs/openvpn/tcp/Moscow_cl.crt
key /jffs/openvpn/tcp/Moscow_cl.key
tls-auth /jffs/openvpn/tcp/Moscow_ta.key 1

crl-verify /jffs/openvpn/tcp/ca.crl

Sobald ich bei "auth-user-pass" das # wegnehme (also aktiv setze), verbindet er sich nicht mehr. Da hast Du recht gehabt.
Sonst ist diese Config die Standard OpenVPN Konfigurtation für Android usw..

Aber:
Obwohl die Verbindung zum VPN Server laut Tomato aktiv ist, lassen sich damit keine Daten übertragen.


Info:
Code:
Current Routing Table
Destination    Gateway / Next Hop    Subnet Mask    Metric    Interface
192.168.1.1    *    255.255.255.255    0    vlan2 (WAN)
192.162.100.240    192.168.1.1    255.255.255.255    0    vlan2 (WAN)
10.7.14.0    *    255.255.255.0    0    tun0
192.168.1.0    *    255.255.255.0    0    vlan2 (WAN)
192.168.0.0    *    255.255.255.0    0    br0 (LAN)
127.0.0.0    *    255.0.0.0    0    lo
default    10.7.14.2    128.0.0.0    0    tun0
128.0.0.0    10.7.14.2    128.0.0.0    0    tun0
default    192.168.1.1    0.0.0.0    0    vlan2 (WAN)


An den Firewallscript usw habe ich nichts geändert, die ist wie bei der UDP Variante identisch. Diese geht zwar online und auch Webseiten gehen, aber UDP ist echt langsam bei mir...


Noch einen Tipp für mich?
 

Silencer1981

Junior Member
Hallo alle zusammen. Ich habe denke das selbe Problem wie auch webslab.

Ich habe eine VPN-Verbindung mit der Beschreibung von Cyberghost herstellen können. Der Router kann über diese Verbindung auch ins Internet gehen, aber leider ist es mir nicht möglich, eine Internetseite am PC aufzurufen, nachdem die VPN-Verbindung hergestellt ist.

Ich habe bisher nur die Daten für die VPN-Verbindung eingegeben. Noch keine Firewallregeln. Sollte doch dann eigentlich funktionieren. Dachte ich jedenfalls.

Woran kann das liegen?

Die hier beschriebene Anleitung kann ich leider so nicht durchführen, da ich keine Firmware für meinen Netgear WNR3500L V2 gefunden habe, die eine JFFS Konfiguration anbietet. Der Ordner ist zwar vorhanden, aber Tomato lässt mich dort keine Unterordner erstellen...


Ich hoffe mir kann jemand helfen.
 

webslap

Member
Du kannst den Unterordner auch erstellen und musst diesen dann formatieren wie es in der Anleitung beschrieben ist. Du kannst aber diese Ordner auch über die SCP Anwendung manuell dort anlegen und dann die key files hochladen. Oder die Files einfach in einen anderen Ordner legen und dann halt anstelle auf /JFFS/OPENVPN/CONFIG zum Beispiel auf /istmirwurscht/configuration/ laden... JFFS wäre nur komfortabler aber es geht auch auf viele andere Wege..

Aber es geht natürlich auch wenn du die keys manuell in Tomato reinkopierst, dann lasst du die hinweise auf diese files aber aus der config einfach weg.
 

webslap

Member
Hallo,
Dank der freundlichen Hilfe von Gerd konnte ich die Konfiguration fertig stellen.

Hier ist die Konfiguration, für Perfect-Privacy auf Tomato
mit OpenVPN-TCP:

(Ich habe die JFFS Ordner anders benennt als es im Beispiel ist, dies bitte entsprechend berücksichtigen oder an eigene Struktur anpassen!) Die restlichen Schritte sind wie am Anfang dieses Threads für OpenVPN-UDP identisch! Ich verwende natürlich auch die OpenVPN-TCP Konfigurationen und Keys anstelle der für UDP, hochgeladen auf JFFS.





Der manuelle Config Code den ich verwende dafür ist:

Code:
tun-mtu 1500
auth SHA512
hand-window 120
inactive 604800
mute-replay-warnings
ns-cert-type server
persist-key
persist-remote-ip
persist-tun
ping 5
ping-restart 120
reneg-sec 3600
resolv-retry infinite
route-delay 2
route-method exe
script-security 2
tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
verb 4

ca  /jffs/openvpn/tcp/ca.crt
cert /jffs/openvpn/tcp/Zurich_cl.crt
key /jffs/openvpn/tcp/Zurich_cl.key
tls-auth /jffs/openvpn/tcp/Zurich_ta.key 1

crl-verify /jffs/openvpn/tcp/ca.crl
 
Last edited:

mbedv

New Member
Hallo,
ich habe einen Asus RT-N66U auf dem die Firmware tomato-K26USB-1.28.AT-RT-N5x-MIPSR2-3.4-138-VPN-64K mit einer Perfect-Privacy OpenVPN Verbindung sauber läuft. Der Asus steckt hinter einem Telekom Hybrid Router und es ist nur der Wan und der Lan1 angeschlossen der dann zum Switch geht. Der Asus soll nur die VPN Verbindung (kein Wlan oder sonstiges) machen und das macht er auch ohne Schwierigkeiten DANK dieser Anleitung hier. Ich habe nur zwei OpenVPN Clients eingerichtet (einen TCP und einen UDP) und sonst nichts (kein Firewall etc. alles auf Standard) und damit geht laut Tests (Check auf der Webseite) der gesamte Verkehr über Perfect-Privacy raus. Wie kann ich jetzt dem Asus Router am einfachsten sagen, dass z. B. die interne IP 192.168.1.150 ohne VPN ins Internet geht? Dem Asus Router habe ich die 192.168.1.254 gegeben und er macht auch kein DHCP.
Nebenbei angemerkt habe ich auch die Merlin Firmware getestet und würde mein Problem einfach beheben, weil man das dort ganz einfach machen kann welche Geräte über VPN und welche nicht. Aber die Performance mit diesem schwachen Router ist unter aller S..., was bei der Tomato nicht der Fall ist.

Vielen Dank!
 
Last edited:

Gerd

Active Member
Wie kann ich jetzt dem Asus Router am einfachsten sagen, dass z. B. die interne IP 192.168.1.150 ohne VPN ins Internet geht?

Ob die Policy Based Routing (PBR) Regeln mit den neueren Routern noch funktionieren, kann ich nicht sagen. Die Regeln habe ich am WRT54GL mit einer ganz alten Version getestet.

Probiere mal ob die Regeln für ein Interface überhaupt noch funktionieren.
Schalte/entferne erst mal für den Test die Firewall-Regeln.

Füge im Menü "Administration-> Scripts-> WAN Up" folgendes:
(Je nachdem ob Du br0 oder br1 Interface verwendest unten anpassen. br0 ist jetzt eingetragen.
Code:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t mangle -F PREROUTING
pppoe_gateway=`ifconfig ppp0 | awk '/P-t-P/ {split ($3,A,":"); print A[2]}'`
ip route add default via $pppoe_gateway table 200
ip rule add fwmark 1 table 200
ip route flush cache
iptables -t mangle -I PREROUTING -i br0 -j MARK --set-mark 1

Wenn Du danach mit dem oberen Script ohne VPN surfst, dann ist das schon mal ein gutes Zeichen. Man müsste die Regeln nur für die IP 192.168.1.150 spezifizieren. Teste aber erst mal die oberen Regeln.
 
Last edited:

mbedv

New Member
Hallo Gerd,
Deins habe ich noch nicht getestet. Ich habe das für diese Firmware gefunden. Ist das das was ich suche und kann mir jemand das Beispiel auf meinen speziellen Fall anpassen? Wollte keinen Link von nem fremden VPN Anbieter einfügen deshalb habe ich es raus kopiert!

Scenario: Excluding a single LAN IP from using the VPN

In this scenario we will exclude a single LAN IP address from using the OpenVPN tunnel established on the TomatoUSB router. This is useful if you want some device from your network (smart TV, gaming console etc.) NOT to use the VPN and access the Internet directly through your ISP. Below are the rules to achieve this, you can either enter them from the SSH console on the TomatoUSB router or you can add them as a WAN UP script in Administration > Scripts > WAN Up tab

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t mangle -F PREROUTING
ip route add default table 200 via 1.2.3.4
ip rule add fwmark 1 table 200
ip route flush cache
iptables -t mangle -I PREROUTING -i br0 -s 192.168.0.115/32 -j MARK --set-mark 1

in the example above, router's gateway is 1.2.3.4, the LAN IP we want to bypass the VPN tunnel (use the ISP connection) is 192.168.0.115.

**Please note that in examples below we will only add the firewall (iptables) rules, the routing rules (first 5 lines) will be unchanged and you should get them from the example above. **
Scenario: Excluding several LAN IPs from using the VPN

The routing rules are the same from the same example, only the iptables line is different:

iptables -t mangle -I PREROUTING -i br0 -s 192.168.0.100/29 -j MARK --set-mark 1

Notice the /29 network mask (6 IP addresses) instead of /32 (a single IP). In this example, 6 IPs from the LAN will bypass the VPN tunnel: from 192.168.0.97 to 192.168.0.102. Use a network mask calculator for this, like subnet-calculator.com, jodies.de/ipcalc. Google "network mask calculator" for more.
Scenario: Excluding LAN IPs based on external destination port/protocol

In this example we will exclude a single IP address from using the VPN for a single destination port. We will use port 80/HTTP which means that all browsing on port 80 will go via ISP and all other traffic via VPN

iptables -t mangle -I PREROUTING -i br0 -s 192.168.0.115/32 -p tcp --dport 80 -j MARK --set-mark 1

We can use multiple ports, for example port 80 and 443 (https)

iptables -t mangle -I PREROUTING -i br0 -s 192.168.0.115/32 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 1

Or we can use the rules in opposite: all traffic via ISP and only ports 80 and 443 via VPN:

iptables -t mangle -I PREROUTING -i br0 -s 192.168.0.115/32 -p tcp -m multiport --dport ! 80,443 -j MARK --set-mark 1
Scenario: Excluding LAN IPs from using the VPN when accessed from the Internet

In this scenario, we want to be able to access a PC from the LAN on a service such as VNC.

When the router is connected to the VPN and we port-forward an inbound connection to a LAN PC, like FTP or VNC, the connection can't be establish because the LAN PC will reply through the VPN tunnel. So we have to bypass the tunnel based on source port in order to be able to connect to that service.

iptables -t mangle -I PREROUTING -i br0 -s 192.168.0.115 -p tcp --sport 5900 -j MARK --set-mark 1

In the above example we marked the packets from VNC to be excluded from the VPN tunnel. Change the port from 5900 to other you want to be able to access from the Internet, like 21 for FTP or 80 for HTTP if you run a web-site on the LAN PC.
 

Gerd

Active Member
Deins habe ich noch nicht getestet

Probiere erst einmal das von mir gepostete aus. Denn wozu vorher eine spezielle Lösung erarbeiten, wenn evtl. das einfachste nicht mal funktioniert.

Wenn das eine funktioniert, dann kann man immer noch in deinem speziellen Fall anpassen.
 

Gerd

Active Member
Eventuell könnte diese Variable nicht mehr funktionieren:

Code:
pppoe_gateway=`ifconfig ppp0 | awk '/P-t-P/ {split ($3,A,":"); print A[2]}'`

Dann müsste man die Gateway IP statt 1.2.3.4 manuell setzen.

Code:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
 iptables -t mangle -F PREROUTING
 ip route add default table 200 via 1.2.3.4
 ip rule add fwmark 1 table 200
 ip route flush cache
 iptables -t mangle -I PREROUTING -i br0 -s 192.168.1.150/32 -j MARK --set-mark 1

Wenn das erstmal funktioniert, dann könnte man die Firewall-Regeln schreiben.

Edit:
Wollte keinen Link von nem fremden VPN Anbieter einfügen deshalb habe ich es raus kopiert!

Seit wann ist es hier verboten die Links von fremden VPN Anbieter einzufügen?
 
Last edited:

mbedv

New Member
Geht Dein Script, also normales Surfen mit und ohne VPN!

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t mangle -F PREROUTING
pppoe_gateway=`ifconfig ppp0 | awk '/P-t-P/ {split ($3,A,":"); print A[2]}'`
ip route add default via $pppoe_gateway table 200
ip rule add fwmark 1 table 200
ip route flush cache
iptables -t mangle -I PREROUTING -i br0 -j MARK --set-mark 1
 

Gerd

Active Member
Auch schon das Script vom Post #111 ausprobiert?

Edit:
Das folgende Script ist das gleiche wie vom Post #111, nur das hier die Gateway IP automatisch eingefügt wird.

Code:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t mangle -F PREROUTING
pppoe_gateway=`ifconfig ppp0 | awk '/P-t-P/ {split ($3,A,":"); print A[2]}'`
ip route add default via $pppoe_gateway table 200
ip rule add fwmark 1 table 200
ip route flush cache
iptables -t mangle -I PREROUTING -i br0 -s 192.168.1.150/32 -j MARK --set-mark 1
 
Last edited:

mbedv

New Member
Auch probiert geht auch mit und ohne VPN! Aber die 192.168.1.150 ist trotzdem noch im VPN!

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
iptables -t mangle -F PREROUTING
ip route add default table 200 via 1.2.3.4
ip rule add fwmark 1 table 200
ip route flush cache
iptables -t mangle -I PREROUTING -i br0 -s 192.168.1.150/32 -j MARK --set-mark 1
 
Last edited:

Gerd

Active Member
Die IP 1.2.3.4 hast Du aber gegen die Gateway IP ausgetauscht oder?

Auch probiert geht auch mit und ohne VPN!

Dann fehlen nur noch die Firewall-Regeln. Wenn soweit alles funktioniert.
 

mbedv

New Member
Ne habe ich nicht!

Meine Gateway IP ist ja der Telekom Hybrid Router und der hat die 192.168.2.1 !

Hab mal die 192.168.2.1 rein gemacht geht genauso keine Änderung ob falsch oder richtig!
 
Last edited:

Gerd

Active Member
Die WAN Up Regeln mit 192.168.2.1 statt 1.2.3.4 hast Du ja bereits. Eventuell geht auch 192.168.1.150 ohne "/32", wie es hier unten steht.

Code:
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
 iptables -t mangle -F PREROUTING
 ip route add default table 200 via 192.168.2.1
 ip rule add fwmark 1 table 200
 ip route flush cache
 iptables -t mangle -I PREROUTING -i br0 -s 192.168.1.150 -j MARK --set-mark 1

Was Firewall-Regeln angeht, fallen mir keine passenden ein als diese:

Code:
iptables --flush FORWARD
iptables -P FORWARD DROP
iptables -I FORWARD -o tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -j ACCEPT
iptables -t nat -I POSTROUTING -o tun+ -j MASQUERADE
iptables -I FORWARD -o br0 -d 192.168.1.150 -j ACCEPT
iptables -I FORWARD -i br0 -s 192.168.1.150 -j ACCEPT

So oder so ähnlich müssten die Firewall-Regeln lauten.

Edit:

Das hier habe ich übersehen:
Auch probiert geht auch mit und ohne VPN! Aber die 192.168.1.150 ist trotzdem noch im VPN!

Was meinst Du genau mit "mit und ohne VPN!"?
 
Last edited:

Gerd

Active Member
Also Surfen geht mit und ohne die 150 bleibt leider im VPN!

Also ohne das Script surfst du mit VPN und mit dem Script surfst du ohne VPN, aber die IP ...150 (192.168.1.150) bleibt mit dem Script und ohne den Script im VPN, richtig?

Wenn Du “Current Routing Table“ im Menü “Advanced-> Routing“ anschaust, was steht da unter Gateway und "ppp0 (WAN)"? Steht da wirklich 192.168.2.1?
 
Top