Gesamten Fritz!Box LAN-Traffic über OpenVPN Tunnel ins Internet routen

gesko

Neuer User
Mitglied seit
5 Apr 2005
Beiträge
44
Punkte für Reaktionen
0
Punkte
0
Hallo Gemeinde,

giganews.com bietet einen OpenVPN-Zugang (VyprVPN) zur Anonymisierung an. Man erhält wahlweise eine IP Adresse aus den Niederlanden, aus den USA oder aus Honkong. Die 7390 soll also als client fungieren und den gesamten Internet-Traffic über den Tunnel routen.

Hier ist die Client config:
Code:
client
dev tun
proto udp
remote eu1.vpn.giganews.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
persist-remote-ip
ca ca.vyprvpn.com.crt
tls-remote eu1.vpn.giganews.com
auth-user-pass
comp-lzo
verb 3

Eine Zertifikats-Datei "ca.vyprvpn.com.crt" ist vorhanden.

Authentifizierung erfolgt mit Username / Passwort

Ich habe mich versucht durch den Dschungel diverser Anleitungen zu kämpfen/googlen. Leider konnte ich keinen roten Faden finden. Das eine Howto sagt "freetz", ein anderes: es geht auch so. Zertifikate müssen mit wget nachgeladen werden u.s.w...

Ich hoffe Ihr könnt mir hier helfen einen roten Faden zu finden.
  • Ist o.g. Szenario mit der 7390 out "of the box möglich" oder braucht man ggf. freetz?
  • Sind evtl. brauchbare Howtos vorhanden?
  • Ich habe einen Mac: das Programm Fritz!Box- Fernzugang einrichten scheidet daher aus. Hat jemand ggf. eine gut kommentierte Beispiel config Datei? und/oder Alternative?
  • Wie sieht das routing grundsätzlich aus?

Gesko
 
giganews.com bietet einen OpenVPN-Zugang (VyprVPN) zur Anonymisierung an.
Sie bieten ihn zur Verschlüsselung deiner Online-Aktivitäten an. Anonym bist du deshalb noch lange nicht. ;)
Man weiß immer noch wer du bist, nur kann man nicht mehr sehen, was du für Daten überträgst :)
Wegen deinem Missverständnis bezüglich der technischen Realisierung siehe hier: OpenVPN oder Fritzbox VPN
OpenVPN läuft nur nach Modifikation auf der Box, z.B. mit freetz.
 
Zuletzt bearbeitet:
[Edit frank_m24: Vollzitat vom Beitrag direkt darüber gelöscht, siehe Forumregeln.]

Danke für den Hinweis, war mir bekannt. Es geht hier aber um die technische Realisierung. Solche VPSs taugen im übrigen ganz gut um geospezififsche Restriktionen zu umgehen.

Gesko
 
Wenn du das OpenVPN-Binary auf der Box hast, funktioniert das ganz genauso, wie auf einem anderen (Linux)Gerät (ein statisch gebautes OpenVPN für die 7390 findest du mit der Suche hier im Forum oder baust es per freetz).
Du brauchst ansonsten auf der Box "nur" die Config und das Zertifikat (wie z.B. auf einem PC), die Dateien könnten auch (einschließlich Binary) auf einem USB-Stick liegen. Es sind dann keine weiteren Besonderheiten auf der FB anders; jedes "Howto" zu deinem Vorhaben tut es also, was die Umsetzung angeht.

Denk aber dran, dass die Box "nur" ein Client ist. Wenn also etwas durch den VPN-Tunnel geroutet wird, kommt es auf der "anderen Seite" mit der eigenen IP an; ich vermute mal, du möchtest zudem noch alle Geräte hinter der VPN-IP der Box "verstecken", wofür dann noch sowas wie iptables vorhanden sein muss, um die NAT zu realisieren...


Jörg
 
@MaxMuster

Danke für Deine Ausführung. Könntest Du das mit den iptables vieleicht etwas näher erläutern. Brauche ich dazu zwingend freetz oder ist das auch ohne mod zu realisiren? Du hast Recht, ich möchte meine lokalen IPs verstecken.

Gesko
 
Das geht (musste ich selbst erstmal probieren) auch ohne mod. Hier mal die benötigten Binaries für die 7390 (FW .91) und eine kurze Anleitung:
Code:
# Auf der Box FTP einschalten ([I]Heimnetzwerk --> Speicher (NAS)[/I]  und dann "Speicher (NAS) aktiv" anhaken)
# und auf der Box telnet aktivieren, wenn noch nicht geschehen (z.B. per Telefon [I][B]#96*7*[/B][/I]) 
# dann erstmal den dekomprimieren so dass es nur noch ein "tar" ist
# (z.B. mit gzip -d iptables_und_openvpn_FB7390_84_04_91.tar.gz )
# und iptables_und_openvpn_FB7390_84_04_91.tar per FTP auf die Box bringen (liegt dann in /var/media/ftp)

# Auf der Box dann in das FTP-Verzeichnis
#
cd /var/media/ftp

# dort tar auspacken
tar xvf iptables_und_openvpn_FB7390_84_04_91.tar

# Module laden
./loadmodules.sh

# iptables NAT-Regel für tun0
./iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 

# u.U. zur Sicherheit NAT-Table prüfen
./iptables -t nat -L -v

# TUN-Device anlegen
mknod /var/tmp/tun c 10 200

# openvpn Testen:
# key erzeugen ..
./openvpn --genkey --secret my.key
# ... und los ...
./openvpn --dev tun --ifconfig 10.8.0.1 10.8.0.2 --secret ./my.key --dev-node /var/tmp/tun --daemon

# .. und, läuft es ??
ps | grep  openvpn | grep -v grep

# .. o.k., dann wieder abbrechen
killall openvpn

# alles andere ist deine Sache ;-)

Jörg


PS: So sieht das dann in der Realität aus:
Code:
joerg@joerg-ubuntu:~$ telnet 192.168.178.1
Trying 192.168.178.1...
Connected to 192.168.178.1.
Escape character is '^]'.


BusyBox v1.8.2 (2010-07-08 13:23:44 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt
# cd /var/media/ftp/
# ls
FRITZ                                     Videos                                    lost+found
Musik                                     iptables_und_openvpn_FB7390_84_04_91.tar
# tar xvf iptables_und_openvpn_FB7390_84_04_91.tar 
iptables
net/
net/netfilter/
net/netfilter/xt_pkttype.ko
net/netfilter/xt_conntrack.ko
net/netfilter/xt_realm.ko
net/netfilter/xt_state.ko
net/netfilter/xt_comment.ko
net/netfilter/xt_quota.ko
net/netfilter/xt_esp.ko
net/netfilter/xt_NOTRACK.ko
net/netfilter/xt_length.ko
net/netfilter/xt_NFQUEUE.ko
net/netfilter/xt_helper.ko
net/netfilter/xt_mark.ko
net/ipv4/
net/ipv4/netfilter/
net/ipv4/netfilter/ipt_TOS.ko
net/ipv4/netfilter/ipt_ttl.ko
net/ipv4/netfilter/ip_nat_irc.ko
net/ipv4/netfilter/ip_nat_ftp.ko
net/ipv4/netfilter/ipt_MASQUERADE.ko
net/ipv4/netfilter/ip_conntrack_tftp.ko
net/ipv4/netfilter/ipt_layer7.ko
net/ipv4/netfilter/ip_conntrack_irc.ko
net/ipv4/netfilter/ip_conntrack_h323.ko
net/ipv4/netfilter/ip_nat_sip.ko
net/ipv4/netfilter/ipt_REDIRECT.ko
net/ipv4/netfilter/iptable_nat.ko
net/ipv4/netfilter/ip_nat_h323.ko
net/ipv4/netfilter/ipt_ah.ko
net/ipv4/netfilter/ip_conntrack.ko
net/ipv4/netfilter/arp_tables.ko
net/ipv4/netfilter/ipt_SAME.ko
net/ipv4/netfilter/ip_nat_pptp.ko
net/ipv4/netfilter/ipt_tos.ko
net/ipv4/netfilter/ip_conntrack_pptp.ko
net/ipv4/netfilter/ip_conntrack_sip.ko
net/ipv4/netfilter/ip_nat_snmp_basic.ko
net/ipv4/netfilter/ip_nat_tftp.ko
net/ipv4/netfilter/ipt_ipp2p.ko
net/ipv4/netfilter/ip_conntrack_ftp.ko
net/ipv4/netfilter/iptable_raw.ko
net/ipv4/netfilter/ip_nat.ko
net/ipv4/netfilter/ipt_NETMAP.ko
loadmodules.sh
openvpn
# ./loadmodules.sh 
# lsmod 
Module                  Size  Used by    Tainted: P  
xt_state                1603  0 
xt_realm                1286  0 
xt_quota                1698  0 
xt_pkttype              1481  0 
xt_mark                 1445  0 
xt_length               1515  0 
xt_helper               1785  0 
xt_esp                  1649  0 
xt_conntrack            2203  0 
xt_comment              1401  0 
xt_NOTRACK              1461  0 
xt_NFQUEUE              1545  0 
iptable_raw             1447  0 
iptable_nat             6662  0 
ipt_ttl                 1519  0 
ipt_tos                 1231  0 
ipt_layer7             12844  0 
ipt_ipp2p               9187  0 
ipt_ah                  1478  0 
ipt_TOS                 1684  0 
ipt_SAME                1883  0 
ipt_REDIRECT            1562  0 
ipt_NETMAP              1537  0 
ipt_MASQUERADE          2579  0 
ip_nat_tftp             1532  0 
ip_nat_snmp_basic      10464  0 
ip_nat_sip              3799  0 
ip_nat_pptp             4243  0 
ip_nat_irc              2220  0 
ip_nat_h323             7066  0 
ip_nat_ftp              3094  0 
ip_nat                 15549  11 iptable_nat,ipt_SAME,ipt_REDIRECT,ipt_NETMAP,ipt_MASQUERADE,ip_nat_tftp,ip_nat_sip,ip_nat_pptp,ip_nat_irc,ip_nat_h323,ip_nat_ftp
ip_conntrack_tftp       3225  1 ip_nat_tftp
ip_conntrack_sip        6520  1 ip_nat_sip
ip_conntrack_pptp       8689  1 ip_nat_pptp
ip_conntrack_irc        5572  1 ip_nat_irc
ip_conntrack_h323      47996  1 ip_nat_h323
ip_conntrack_ftp        6472  1 ip_nat_ftp
ip_conntrack           44164  21 xt_state,xt_helper,xt_conntrack,xt_NOTRACK,iptable_nat,ipt_layer7,ipt_MASQUERADE,ip_nat_tftp,ip_nat_snmp_basic,ip_nat_sip,ip_nat_pptp,ip_nat_irc,ip_nat_h323,ip_nat_ftp,ip_nat,ip_conntrack_tftp,ip_conntrack_sip,ip_conntrack_pptp,ip_conntrack_irc,ip_conntrack_h323,ip_conntrack_ftp
arp_tables             10412  0 
userman_mod            42796  2 
sch_sfq                 5671  4 
sch_llq                 9170  1 
sch_tbf                 5716  1 
kdsldmod              986168  7 userman_mod
ohci_hcd               20196  0 
ehci_hcd               29274  0 
usbcore               126854  3 ohci_hcd,ehci_hcd
dect_io                16010  0 
avm_dect              231812  1 dect_io
capi_codec            186124  0 
isdn_fbox_fon5        766763  5 
pcmlink               276062  3 avm_dect,capi_codec,isdn_fbox_fon5
rtc_avm                 6557  1 pcmlink
rtc_core                7083  1 rtc_avm
rtc_lib                 2712  2 rtc_avm,rtc_core
Piglet_noemif          28817  0 
bmedrv                  5871  0 
opensrc_lkm             2038  1 bmedrv
aclap_driver_lkm       19861  0 
periap_driver_lkm      12348  0 
sysKCode_lkm           12468  0 
ethdriver_lkm          37933  2 aclap_driver_lkm,periap_driver_lkm
timers_lkm              6121  0 
bmdriver_lkm           12479  0 
ap2ap_lkm              22767  4 kdsldmod,aclap_driver_lkm,ethdriver_lkm,bmdriver_lkm
fusivlib_lkm           46422  8 kdsldmod,bmedrv,aclap_driver_lkm,periap_driver_lkm,sysKCode_lkm,ethdriver_lkm,bmdriver_lkm,ap2ap_lkm
led_modul_Fritz_Box_7390    65357  2 
# 
# ./iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 1 packets, 54 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1 packets, 54 bytes)
 pkts bytes target     prot opt in     out     source               destination         
# 
# 
# ./iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 
# 
# ./iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  any    tun0    anywhere             anywhere            

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
# mknod /var/tmp/tun c 10 200
# 
# ./openvpn --genkey --secret my.key
# cat my.key 
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
cb7c6a8b96870d336300ef2dc8496e58
03d8f337c3c25092d994fb88ac55a7d7
ca8d971081d96e8eed596993ca34ee77
c37008b83fa331d68ead81331b7cd9e3
02b9854776302da9073f2f0cdb12afa8
0493848f5209fe6f9da388ade924f30d
b2ed59fe868b3a3a639147962f6275e9
203f8e0dad723b631c21835027ea6ead
a1abe77bc88e16cedcf9da7c03096bb2
b533dbd709790f8a0f974c147f1971b6
e1f61d303a21a263821eabdfcd218896
00c920d4bf685b750dbb2a521ab2ed44
8c09177eb7a284e7a4672dafa95ac23a
d05e784c9ca13a5f9805a4ae89fccf04
7df84af5feb793cc933b82bcc5886068
d1816ecb847af65897255eba50729bda
-----END OpenVPN Static key V1-----
# 
# ./openvpn --dev tun --ifconfig 10.8.0.1 10.8.0.2 --secret ./my.key --dev-node /var/tmp/tun --daemon
# 
# ps | grep  openvpn | grep -v grep
 1468 root       1376 R   ./openvpn --dev tun --ifconfig 10.8.0.1 10.8.0.2 --secret ./my.key --dev-node /var/tmp/tun --daemon 
# 
# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:240 (240.0 B)

#
 

Anhänge

  • iptables_und_openvpn_FB7390_84_04_91.tar.gz
    813 KB · Aufrufe: 153
Zuletzt bearbeitet:
  • Like
Reaktionen: prisrak1
@MaxMuster
Vielen Dank für Deine ausführliche Hilfe. So Leute wie Du müssten in deutschsprachigen Foren mehr unterwegs sein.

Komme heute leider nicht mehr zum Testen, werde aber auf jeden Fall berichten.

Lieben Gruß

Gesko
 
Hallo Gemeinde,

dank der grandiosen Hilfe von MaxMuster und einiger Recherche steht nun mein Tunnel zu giganews. Ich habe aber noch Fragen zum routing. Hier der Stand der Dinge:

So starte ich OpenVPN und authentifiziere ich mich bei giganews:
Code:
# Prüfen ob Internet vorhanden
while !(ping -c 1 www.google.de); do
sleep 5
done

# Module laden
./loadmodules.sh

# iptables NAT-Regel für tun0
./iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

# tun-Device anlegen
mknod /var/tmp/tun c 10 200

# openVPN starten
/var/media/ftp/openVPN/openvpn --client --config eu1.vpn.giganews.com.conf --dev-node /var/tmp/tun --daemon

So sieht die config eu1.vpn.giganews.com.conf aus:

Code:
client
dev tun
proto udp
remote eu1.vpn.giganews.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
persist-remote-ip
ca ca.vyprvpn.com.crt
tls-remote eu1.vpn.giganews.com
auth-user-pass password.txt
comp-lzo
verb 3

Da man sich bei giganews mit Passwort und Usernamen anmelden muss benötigen wir noch eine Datei password.txt:

Code:
user
pass

Meldungen beim Verbindungsaufbau:

Code:
# ./openvpn --client --config eu1.vpn.giganews.com.conf --dev-node /var/tmp/tun         
Thu Mar 10 21:14:59 2011 OpenVPN 2.1.4 mips-linux [SSL] [LZO2] [EPOLL] [MH] [PF_INET6] built on Mar  7 2011
Thu Mar 10 21:14:59 2011 WARNING: file 'password.txt' is group or others accessible
Thu Mar 10 21:14:59 2011 WARNING: Make sure you understand the semantics of --tls-remote before using it (see the man page).
Thu Mar 10 21:14:59 2011 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Thu Mar 10 21:14:59 2011 LZO compression initialized
Thu Mar 10 21:14:59 2011 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Thu Mar 10 21:14:59 2011 Socket Buffers: R=[132096->131072] S=[132096->131072]
Thu Mar 10 21:14:59 2011 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Thu Mar 10 21:14:59 2011 UDPv4 link local: [undef]
Thu Mar 10 21:14:59 2011 UDPv4 link remote: [AF_INET]138.199.67.17:1194
Thu Mar 10 21:14:59 2011 TLS: Initial packet from [AF_INET]138.199.67.17:1194, sid=3dad9f4f b88c26da
Thu Mar 10 21:14:59 2011 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Thu Mar 10 21:14:59 2011 VERIFY OK: depth=1, /C=KY/ST=GrandCayman/L=GeorgeTown/O=GoldenFrog-Inc/CN=GoldenFrog-Inc_CA/[email protected]
Thu Mar 10 21:14:59 2011 VERIFY X509NAME OK: /C=KY/ST=GrandCayman/L=GeorgeTown/O=GoldenFrog-Inc/CN=eu1.vpn.giganews.com/[email protected]
Thu Mar 10 21:14:59 2011 VERIFY OK: depth=0, /C=KY/ST=GrandCayman/L=GeorgeTown/O=GoldenFrog-Inc/CN=eu1.vpn.giganews.com/[email protected]
Thu Mar 10 21:15:03 2011 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Thu Mar 10 21:15:03 2011 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Mar 10 21:15:03 2011 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Thu Mar 10 21:15:03 2011 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Thu Mar 10 21:15:03 2011 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA
Thu Mar 10 21:15:03 2011 [eu1.vpn.giganews.com] Peer Connection Initiated with [AF_INET]138.199.67.17:1194
Thu Mar 10 21:15:05 2011 SENT CONTROL [eu1.vpn.giganews.com]: 'PUSH_REQUEST' (status=1)
Thu Mar 10 21:15:05 2011 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,explicit-exit-notify 5,rcvbuf 262144,route-gateway 10.9.0.1,topology subnet,ping 10,ping-restart 60,ifconfig 10.9.0.121 255.255.0.0'
Thu Mar 10 21:15:05 2011 Options error: Unrecognized option or missing parameter(s) in [PUSH-OPTIONS]:4: explicit-exit-notify (2.1.4)
Thu Mar 10 21:15:05 2011 OPTIONS IMPORT: timers and/or timeouts modified
Thu Mar 10 21:15:05 2011 OPTIONS IMPORT: --sndbuf/--rcvbuf options modified
Thu Mar 10 21:15:05 2011 Socket Buffers: R=[131072->264192] S=[131072->131072]
Thu Mar 10 21:15:05 2011 OPTIONS IMPORT: --ifconfig/up options modified
Thu Mar 10 21:15:05 2011 OPTIONS IMPORT: route options modified
Thu Mar 10 21:15:05 2011 OPTIONS IMPORT: route-related options modified
Thu Mar 10 21:15:05 2011 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Thu Mar 10 21:15:05 2011 TUN/TAP device tun0 opened
Thu Mar 10 21:15:05 2011 TUN/TAP TX queue length set to 100
Thu Mar 10 21:15:05 2011 /sbin/ifconfig tun0 10.9.0.121 netmask 255.255.0.0 mtu 1500 broadcast 10.9.255.255
Thu Mar 10 21:15:05 2011 NOTE: unable to redirect default gateway -- Cannot read current default gateway from system
Thu Mar 10 21:15:05 2011 Initialization Sequence Completed

Was mir hier auffällt ist:
Code:
Thu Mar 10 21:15:05 2011 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,explicit-exit-notify 5,rcvbuf 262144,route-gateway 10.9.0.1,topology subnet,ping 10,ping-restart 60,ifconfig 10.9.0.121 255.255.0.0'
.
.
.
Thu Mar 10 21:15:05 2011 /sbin/ifconfig tun0 10.9.0.121 netmask 255.255.0.0 mtu 1500 broadcast 10.9.255.255
Thu Mar 10 21:15:05 2011 NOTE: unable to redirect default gateway -- Cannot read current default gateway from system

Wie schaffe ich es nun den gesamten traffic über den Tunnel ins Internet zu routen?

Eine Lösung wäre sicherlich das Löschen der default route und setzen einer Neuen. Aber da gibt es doch sicher eine elegantere Lösung oder?

Code:
#Löschen des default gateway
route del default dev dsl

#Host route zu OpenVPN server-IP
route add -host 138.199.XXX.XXX dev dsl

#default route auf tun0 setzen
route add -net 0.0.0.0/0 dev tun0


Wie macht Ihr Profis das? Sehr gerne würde ich das Ganze reversibel gestalten. Also nach einem reboot sollte die box wieder normal laufen.

Bin für jeden Tipp dankbar.

Gesko
 
Das Problem ist eine etwas "merkwürdige" Art von AVM, ihr Routing zu gestalten ;-) (sieht man auch hier als freetz Ticket).

Dort ist auch eine Lösung drin, die aber scheinbar das AVM-VPN "kaputt" macht. Ansonsten bliebe, das Umrouten per "up-script" zu machen, das Thema kannst du hier nachlesen.

Jörg
 
@MaxMuster
Noch mal vielen Dank für Deine Hilfe. Die Lösung per "up-script" funktioniert:
Code:
# Find OpenVPN server IP address
VPNS=$(ping -c1 eu1.vpn.giganews.com | sed -n '/PING/ s/^[^(]*(\([0-9\.]*\).*/\1/p')

# Set route to VPN server over device dsl
route add $VPNS dev dsl

# Set route to tun0 device
route add -net 0.0.0.0/1 dev tun0
route add -net 128.0.0.0/1 dev tun0

Das script zum Ändern der default route funktioniert leider nicht. Die unmodifizierte 7390 hat wohl kein awk.

Code:
#!/bin/sh
#
# script to correct strange default route by dsld
#

#- important variables
#$1={online|offline]
#DNS1=
#DNS2=
#IPADDR=
#GATEWAY=

#- debug
#	exec 1> "/tmp/$(basename "$0").log"
#	exec 2>&1
#	echo "`date` -- $(basename "$0") $*"
#	env | sort
#	set -x

#- magic
case "$1" in
	online )
		DEFAULTROUTEIF="`route -n | awk '/^0.0.0.0[[:space:]]+0.0.0.0/ {print $8}'`"
		if [ "$DEFAULTROUTEIF" = "dsl" ]; then
			ifconfig $DEFAULTROUTEIF $IPADDR dstaddr $IPADDR
			ifconfig $DEFAULTROUTEIF:dsld 169.254.2.1 dstaddr 169.254.2.1
			DEFAULTROUTEIF_IPADDR="$IPADDR"
			route del default 2> /dev/null
			route add default gw $DEFAULTROUTEIF_IPADDR dev $DEFAULTROUTEIF
		fi
	;;
esac

Code:
# route -n | awk '/^0.0.0.0[[:space:]]+0.0.0.0/ {print $8}'
-sh: awk: not found

Da ich leider nicht sehr fit in Sachen shell scripting und regular expressions bin komme ich hier leider nicht weiter. Siehst Du eine Möglichkeit das script für die unmodifizierte 7390 anzupassen?


Gesko
 
Zuletzt bearbeitet:
Versuche mal stattdessen:
Code:
 route -n | sed -n '/^0.0.0.0[[:space:]]\+0.0.0.0/ s/^.*[[:space:]]\([^[:space:]]\+\)$/\1/p'
 
@MaxMuster

Vielen Dank. So funktioniert es. Hier mal der Stand der Dinge:


startup.sh
Code:
#!/bin/sh
#
# Project: Connect fritz!box 7390 to VyprVPN via OpenVPN
#
# Start up script to connect the 7390 to giganews.com/VyprVPN via openVPN.
# 

# get the config file
. ./config.cfg

# start telnetd
/usr/sbin/telnetd -l /sbin/ar7login

# Check for internet connection.
while !(ping -c 1 www.google.de); do
	sleep 5
done

# Loading modules
$INSTDIR/loadmodules.sh

# Create iptables NAT rule for tun0
$INSTDIR/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

# Create tun device
mknod /var/tmp/tun c 10 200

# Correct default gateway. Delete default gateway and add a corrected one.
# Necessary because of AVMs strange 0.0.0.0 gateway not recognized by openVPN.
# Will break AVMs VPN !!!!! Alternative: use openVPn with --up and --down scripts
# to do the routing.
DEFAULTROUTEIF="`route -n | sed -n '/^0.0.0.0[[:space:]]\+0.0.0.0/ s/^.*[[:space:]]\([^[:space:]]\+\)$/\1/p'`"
		if [ "$DEFAULTROUTEIF" = "dsl" ]; then
			ifconfig $DEFAULTROUTEIF:dsld 169.254.2.1 dstaddr 169.254.2.1
			route del default 2> /dev/null
			route add default gw 169.254.2.1 dev $DEFAULTROUTEIF
		fi
	
# Set bypass routing. 
# Get entries from file bypass.cfg. Resolve name and set route to dsl.
BYPCFG=$INSTDIR/bypass.cfg
		cat $BYPCFG | while read a; do
			NEWSS=$(ping -c1 $a | sed -n '/PING/ s/^[^(]*(\([0-9\.]*\).*/\1/p')
			route add $NEWSS dev dsl
		done

# Check if there is a password.txt file. If the file exists delete it.
test -f $INSTDIR/password.txt && rm $INSTDIR/password.txt

# Create a new password file and write usernemae and password.txt
touch $INSTDIR/password.txt
echo $USERNAME >> $INSTDIR/password.txt
echo $PASSWORD >> $INSTDIR/password.txt

# Check if there is NOT a logfile. If not create it.
! test -f $INSTDIR/log.txt && touch $INSTDIR/log.txt

# Firing up OpenVPN in background. Write output to log.txt. 
$INSTDIR/openvpn --config $SERVERLOC.vpn.giganews.com.conf --auth-user-pass $INSTDIR/password.txt --dev-node /var/tmp/tun --script-security 2 1>/var/media/ftp/openVPN/log.txt 2>&1 &

In das Verzeichnis "/etc/onlinechanged" darf ich leider nicht schreiben, da read only. Habe die Korrektur der "default route" nun direkt über das Start-Script gemacht. Kriegt man das bei einer "ungemoddedten" 7390 auch irgendwie "boot save" über onlinechanged hin, oder beleibt mir nur der Weg über die "debug.cfg"?

Hast Du vielleicht auch noch alternative Ideen für die Zwangstrennung?

Lieben Gruß

Gesko
 
Ich würde das Verzeichnis mit einer Kopie "überladen" (die Skripte sind ja nicht so groß):
Code:
# Temp-Verzeichnis als Ersatz
mkdir -p /var/tmp/onlinechanged
# alles kopieren
cp -a /etc/onlinechanged/* /var/tmp/onlinechanged
# Kopie ueberladen
mount -o bind /var/tmp/onlinechanged /etc/onlinechanged/
# Jetzt ist das Verzeichnis "schreibbar" 
echo "hallo hallo" >  /etc/onlinechanged/test.txt
cat /etc/onlinechanged/test.txt

# nachher loeschen nicht vergessen ;-)
rm /etc/onlinechanged/test.txt

Das ganze dann, Einschließlich Erzeugen des neuen Skripts in die rc.config.
Eine Alternative wäre, den "neuen" Ordner ins Flash zu verlegen, dann bleibt auch "deine Ergänzung" und du muss beim Starten nur einmal deinen Ordner über den originalen "drüber mounten".

Jörg
 
@MaxMuster.

Vielen Dank. Das mit dem überladen werde ich später testen und berichten. Ich verstehe leider nicht alles. Was meinst Du mit "Erzeugen des neuen Skripts"? Wie funktioniert " ins Flash zu verlegen"? Bei welcher Lösung bleibt "meine Ergänzung" nicht erhalten?

Es wäre toll wenn Du das vielleicht etwas genauer erläutern könntest.

Wünsche Dir einen schönen Tag.

LG

Gesko
 
Alles, was in "/var/tmp" passiert, ist nur im RAM der Box und nach einem Neustart "weg". Wenn du also dort ein Skript für "onlinechanged" ablegen willst, was das Problem des Defaultgateways löst, muss das bei jedem Neustart neu angelegt werden...
Nutzt du dafür den Flash-Speicher (wie z.B. oben abgegeben für die Binaries vom OpenVPN und iptables analog eine Ordner "/var/media/ftp/onlinechanged"), dann ist das "Rebootsicher". Wenn du dorthin die AVM-Dinge kopierst und dein eigenes Skript dort anlegst, brauchst du nach jedem Neustart nur dafür zu sorgen, dass dieser Ordner den "originalen" Ordner überlagert (z.B. indem du den "mount -o bind ..." Befehl im Skript debug.cfg ausführst...

Jörg
 
@MaxMuster

Dank Deiner Hilfe funktioniert alles echt prima. Hier mal kurz der Stand der Dinge, bevor ich noch einige Fragen zu den iptables habe:

Eintrag in die debug.cfg
Code:
mkdir -p /var/tmp/onlinechanged
cp /var/media/ftp/openVPN/start_openvpn /var/tmp/onlinechanged/

Kopieren nach /var/tmp/onlinechanged reicht da das Verzeichnis durch /bin/onlinechanged berücksichtigt wird.

Eigentliches Skript start_openvpn

Code:
#!/bin/sh
#
# Project: Connect fritz!box 7390 to VyprVPN via OpenVPN
#
# Start up script to connect the 7390 to giganews.com/VyprVPN via openVPN.


case "$1" in
        online )
                #####################################################
				# LOAD CONFIG FILE config.cfg. 
				#####################################################

				# Load config file
				. /var/media/ftp/openVPN/config.cfg
				
				
				#####################################################
				# CHANGE TO INSTALL DIR
				#####################################################
				cd $INSTDIR

				#####################################################
				# BYPASS CONFIGURATION in bypass.cfg 
				#####################################################
				# Last line must be a blank line.


				#####################################################
				#####################################################
				# MAIN SCRIPT 
				#####################################################
				#####################################################

				#####################################################
				# Check for internet connection.
				#####################################################
				while !(ping -c 1 www.google.de) >/dev/null 2>&1; do
					sleep 5
				done

				#####################################################
				# Loading modules
				#####################################################
				for x in $(ls net/ipv4/netfilter/); do
					y=${x%.*} # strip file extension
						if ! lsmod | grep $y >/dev/null 2>&1; then # Test if module is NOT installed
							insmod net/ipv4/netfilter/$x;	# then install module.
						fi
				done

				for x in $(ls net/netfilter/); do
					y=${x%.*}
						if ! lsmod | grep $y >/dev/null 2>&1; then # Test if module is NOT installed
							insmod net/netfilter/$x; # then install module.
						fi
				done

				#####################################################
				# Create iptables NAT rule for tun0
				#####################################################
				# First flush iptables to prevent duplicates.
				$INSTDIR/bin/iptables -t nat -F
				$INSTDIR/bin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

				#####################################################
				# Check if tun device NOT exists; then create it
				#####################################################
				[ ! -c /var/tmp/tun ] && mknod /var/tmp/tun c 10 200

				#####################################################
				# Correct default gateway.
				#####################################################
				# Delete default gateway and add a corrected one.
				# Necessary because of AVMs strange 0.0.0.0 gateway not recognized by openVPN.
				# Will break AVMs VPN !!!!! Alternative: use openVPn with --up and --down scripts
				# to do the routing.
				DEFAULTROUTEIF="`route -n | sed -n '/^0.0.0.0[[:space:]]\+0.0.0.0/ s/^.*[[:space:]]\([^[:space:]]\+\)$/\1/p'`"
						if [ "$DEFAULTROUTEIF" = "dsl" ]; then
							ifconfig $DEFAULTROUTEIF:dsld 169.254.2.1 dstaddr 169.254.2.1
							route del default 2> /dev/null
							route add default gw 169.254.2.1 dev $DEFAULTROUTEIF
						fi
	
				#####################################################
				# Set bypass routing. 
				#####################################################
				# Get entries from file bypass.cfg. Resolve name and set route to dsl.
				BYPCFG=$INSTDIR/bypass.cfg
						cat $BYPCFG | while read a; do
							NEWSS=$(ping -c1 $a | sed -n '/PING/ s/^[^(]*(\([0-9\.]*\).*/\1/p')
			
							if ! route -n | grep $NEWSS >/dev/null 2>&1; then 
								route add $NEWSS dev dsl	
			
							fi
			
						done
		
				#####################################################
				# Check if there is a password.txt file. If the file exists delete it.
				#####################################################
				test -f $INSTDIR/password.txt && rm $INSTDIR/password.txt

				#####################################################
				# Create a new password file and write usernemae and password.txt
				#####################################################
				touch $INSTDIR/password.txt
				echo $USERNAME >> $INSTDIR/password.txt
				echo $PASSWORD >> $INSTDIR/password.txt

				#####################################################
				# Check if there is NOT a logfile; then create it
				#####################################################
				! test -f $INSTDIR/log.txt && touch $INSTDIR/log.txt

				#####################################################
				# Start OpenVPN. Write output to log.txt. 
				#####################################################
				# Write output to log.txt 
				$INSTDIR/bin/openvpn --config $INSTDIR/$SERVERLOC.vpn.giganews.com.conf --auth-user-pass $INSTDIR/password.txt --dev-node /var/tmp/tun --script-security 2 1>$INSTDIR/log.txt 2>&1 &

        ;;
        offline )
        
                #####################################################
				# get the config file
				#####################################################
				. /var/media/ftp/openVPN/config.cfg
				
				#####################################################
				# Kill openVPN
				#####################################################
				killall openvpn

				#####################################################
				# Del bypass routing. 
				#####################################################
				# Get entries from file bypass.cfg. Resolve name and del route to dsl.
				BYPCFG=$INSTDIR/bypass.cfg
						cat $BYPCFG | while read a; do
							NEWSS=$(ping -c1 $a | sed -n '/PING/ s/^[^(]*(\([0-9\.]*\).*/\1/p')
							route del $NEWSS dev dsl
						done

        ;;
esac

Nun habe ich noch einige Fragen zum routing. Bei einem portscan ist mir aufgefallen, dass z.B. der telentd, das Webinterface und der ftp Server der Box von außen durch den Tunnel erreichbar sind. Wie unterbinde ich das am besten? Habe ich da mit iptables eine Chance? Hast Du da vielleicht auch noch einige rules zur Hand?

Nochmal ganz herzlichen Dank für Deine Hilfe.

Lieben Gruß

Gesko
 
... Bei einem portscan ist mir aufgefallen, dass z.B. der telentd, das Webinterface und der ftp Server der Box von außen durch den Tunnel erreichbar sind. Wie unterbinde ich das am besten? Habe ich da mit iptables eine Chance? ...
Ja, mit iptables kannst Du für unerwünschte source-IP-Adressen, die Ports auf denen diese Server lauschen, blocken.
 
By any chance, would you already have the ipv6 iptables compiled for the 7390 with the same firmware or 84.04.88 ?
 
You might try this one...
 

Anhänge

  • netfiltermodules.tgz
    234.6 KB · Aufrufe: 19
  • xtables_with_ipv6_mips_static.tgz
    176 KB · Aufrufe: 9
Thanks it works well, except 4 modules :

insmod: can't insert 'net/ipv4/netfilter/ip_conntrack_amanda.ko': unknown symbol in module or invalid parameter
insmod: can't insert 'net/ipv4/netfilter/ip_nat_amanda.ko': unknown symbol in module or invalid parameter
insmod: can't insert 'net/ipv4/netfilter/ip_queue.ko': Cannot allocate memory
insmod: can't insert 'net/ipv4/netfilter/ip_tables.ko': invalid module format

By any chance, do you also have ebtables static and the ebtables .ko ?

Thanks
Guylhem
 

Statistik des Forums

Themen
246,183
Beiträge
2,247,562
Mitglieder
373,729
Neuestes Mitglied
ChTh
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.