l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na
Transkrypt
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na
l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach x509 8.09.x , 10.03.x Jako, że windows wspiera natywnie protokół tunelowania l2tp postanowiłem przedstawić opis dotyczący zestawienia tunelu szyfrowanego za pomocą tenże protokołu l2tp przy użyciu programu xl2tpd po jednej stronie kamikadze Openwrt oraz clientów windows i openwrt jako clienta tenże tunelu. Całe łącze będzie szyfrowane za pomocą ipsec wykorzystując Racoon po stronie linux i windows. Wszystko to opierać będzie się na certyfikatach x509 . 27.07.2010: Testowano na Backfire 10.03.x na routerze wr1043nd. Konfigurację klientów windows opisałem na końcu mojego artykułu . Konfigurację OpenWrt jako client l2tp+ipsec przedstawiłem na końcu. 1 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Założenia Adres publiczny WAN IP Routera OpenWrt : 218.97.26.22 Adres i maska sieci LAN Routera openWrt : 192.168.1.0/24 Adres ip dns i wins w naszej sieci LAN : 192.168.1.1 Adres Publiczny clienta VPN l2tp : 0.0.0.0/0 - adres nieznany (0.0.0.0)Windows <=============> (218.97.26.22)openwrt(192.168.1.0/24) Nazwa DNS od strony Openwrt: l2tp.vpn.dyndns.org Nazwa DNS od strony clienta : laptop.vpn.dyndns.org Najlepiej aby były to adresy dns. 2 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Szyfrowanie przy wykorzystaniu certyfikatów x509 w trybie transportowym ipsec Aby nie było problemów z komunikacją z za nat dla clienta windows został użyty protokuł vpn traversal_nat, który potrafi przebić się z za routerów natujących. Aby było to możliwe przeważnie trzeba zostawić załączone opcje np. w asmax BR-604G: Enable IPsec pass through on VPN connection Enable L2TP pass through on VPN connection Instalacja Instalujemy pakiety xl2tpd, racoon i ew. openssl opkg install ipsec-tools libopenssl openssl-util xl2tpd kmod-ppp ppp opkg install ipsec-tools kmod-crypto-aead kmod-crypto-aes kmod-crypto-authenc kmod-crypto-core kmod-crypto-des kmod-crypto-hmac kmod-crypto-md5 kmod-crypto-sha1 kmod-ipsec kmod-ipsec4 Od wersji Backfire nie ma modułu kmod-crypto-aead 3 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 musimy jeszcze utworzyć plik ładujący dodatkowe moduły w czasie startu systemu - są wymagane do poprawnej pracy- UWAGA !!! TYLKO w kamikadze 8.09.x echo af_key >> /etc/modules.d/10-ipsec echo ah4 >> /etc/modules.d/10-ipsec echo esp4 >> /etc/modules.d/10-ipsec echo xfrm_user >> /etc/modules.d/10-ipsec echo xfrm4_mode_beet >> /etc/modules.d/10-ipsec echo xfrm4_mode_transport >> /etc/modules.d/10-ipsec echo xfrm4_mode_tunnel >> /etc/modules.d/10-ipsec echo xfrm4_tunnel >> /etc/modules.d/10-ipsec Konfiguracja po stronie Openwrt pakietu xl2tpd Pliki konfiguracyjne są umieszczone w następujących katalogach /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/l2tp-secrets /etc/ppp/options.xl2tpd /etc/ppp/chap-secrets 4 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Zawartość pliku /etc/xl2tpd/xl2tpd.conf: [global] port = 1701 ; [lns default] ip range = 192.168.222.10-192.168.222.100 local ip = 192.168.222.1 length bit = yes require chap = yes refuse pap = yes require authentication = yes name = VPN l2tp for Formaplan ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd Adresy ip 192.168.222. są potrzebne do zestawienia połączenia ppp gdzie: 192.168.222.1 - jest to adres ip na serwerze, który zostanie utworzony w czasie startu xl2tpdmoże to być interfjes ppp0 192.168.222.10-192.168.222.100 - zakres adresów przydzielany clientom Adresy muszą być inne jak te które wykorzystujemy we własnej sieci tak aby nie było kolizji. 5 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Zawartość pliku /etc/xl2tpd/l2tp-secrets: Tego pliku nie wykorzystujemy Zawartość pliku /etc/ppp/options.xl2tpd: auth idle 1800 mtu 1460 mru 1460 debug proxyarp +mschap-v2 ms-dns 192.168.1.1 ms-wins 192.168.1.1 logfd 2 logfile /var/log/xl2tpd.log ipcp-accept-local ipcp-accept-remote #noccp nodefaultroute lock crtscts connect-delay 5000 Zawartość pliku /etc/ppp/chap-secrets: 6 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 # Secrets for authentication using CHAP # client server secret IP addresses username_vpn * password_vpn 192.168.222.10 Troszkę wyjaśnienia w/w wpisu Otóż adres ip przy wpisie danego usera oznacza, że ten user zawsze będzie dostawał adres ip 192.168.222.10 Przyda się do kontroli reguł firewalla Jeśli nie chcemy konkretnych ip możemy wpisać gwiazdkę zamiast adresu ip. i wtedy wiersz będzie wyglądał następująco: # Secrets for authentication using CHAP # client server secret IP addresses username_vpn * password_vpn * Hasło podajemy otwartym tekstem. Jeśli wykorzystujemy Domenę to hasło winno wyglądac wedle shematu: 7 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 # Secrets for authentication using CHAP # client server secret IP addresses DOMENAusername_vpn * password_vpn * Konfiguracja firewalla na OpenWrt: Zawartość pliku /etc/config/firewall config rule option src wan option proto esp option target ACCEPT config rule option src wan option proto ah option target ACCEPT config rule option src wan option proto ipcomp option target ACCEPT config rule option dest_port 500 option proto udp option target ACCEPT config rule option dest_port 4500 option proto udp 8 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 option target ACCEPT config include option path /etc/firewall.user Zawartość pliku /etc/firewall.user: #reduły dla xl2tpd + racoon iptables -I INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT iptables -I FORWARD -i ppp+ -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I FORWARD -i ppp+ --src 192.168.222.10 -j ACCEPT iptables -I INPUT -i ppp+ -p tcp --dport 53 -j ACCEPT iptables -I INPUT -i ppp+ -p udp --dport 53 -j ACCEPT iptables -t nat -I postrouting_rule -p ipcomp -j ACCEPT iptables -t nat -I postrouting_rule -p ah -j ACCEPT iptables -t nat -I postrouting_rule -p esp -j ACCEPT 9 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Teraz nasz client o adresie ip. 192.168.222.10 będzie miał dostęp do naszej sieci LAN po vpn. Jeśli chcemy puścić wszystkie komputery do LAN możemy wykorzystać regułkę: iptables -I FORWARD -i ppp+ --src 192.168.222.0/24 -j ACCEPT Konfiguracja Racoon na Openwrt: w katalogu /etc/racoon utwórz 4 pliki i 1 katalog touch /etc/racoon/psk.txt touch /etc/racoon/racoon.conf touch /etc/racoon/setkey.conf touch /etc/init.d/racoon 10 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 mkdir /etc/racoon/certs oraz nadaj uprawnienia do wykonywania chmod +x /etc/racoon/setkey.conf chmod +x /etc/init.d/racoon chmod 600 /etc/racoon/psk.txt Plik konfiguracyjny /etc/racoon/racoon.conf winien wyglądać następująco: path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; log info; listen { isakmp 218.97.26.22 [500]; isakmp_natt 218.97.26.22 [4500]; 11 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 } timer { natt_keepalive 10sec; } remote anonymous { exchange_mode main; doi ipsec_doi; generate_policy on; situation_identity_only; lifetime time 28800 sec; my_identifier asn1dn; peers_identifier asn1dn; verify_identifier on; verify_cert on; ca_type x509 "/etc/ssl/cacert.pem"; certificate_type x509 "newcert.pem" "newkey.pem"; passive on; initial_contact off; nat_traversal on; #ike_frag=on; proposal_check obey; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method rsasig; dh_group 2; } } sainfo anonymous { pfs_group 2; lifetime time 3600 sec; encryption_algorithm aes,3des ; authentication_algorithm hmac_sha1,hmac_md5 ; compression_algorithm deflate; } 12 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Plik /etc/racoon/setkey.conf winien wyglądać: #!/usr/sbin/setkey -f flush; spdflush; #FPW spdadd 218.97.26.22[1701] 0.0.0.0/0 udp -P out ipsec esp/transport//require; spdadd 0.0.0.0/0 218.97.26.22[1701] udp -P in ipsec esp/transport//require; Plik /etc/init.d/racoon winien zawierać: #!/bin/sh /etc/rc.common START=60 start() { echo Uruchamiam tunel ipsec racoon... if [ ! -e /var/racoon ] then mkdir /var/racoon fi setkey -f /etc/racoon/setkey.conf racoon -f /etc/racoon/racoon.conf } stop() { killall racoon } 13 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 a następnie wykonać /etc/init.d/racoon enable /etc/init.d/racoon start /etc/init.d/xl2tpd enable /etc/init.d/xl2tpd start Do katalogu /etc/racoon/certs wrzucamy nasz certyfikat publiczny i prywatny serwera patrz artykuł generowanie certyfikatów Przypominam tylko, iż w czasie generowania certyfikatów powstają nam pliki: newcert.pem - certyfikat publiczny newkey.pem - klucz prywatny certyfikatu newreq.pem - request to nasze wygenerowane pliki certyfikatu 14 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 W OpenWrt używamy skryptu CA.sh Jeśli chcemy mieć weryfikację certyfikatów poprzez listy crl (zakładam że CA już masz) wykonujemy w katalogu (przy założeniu, iż w tym katalogu generowałeś certyfikaty swoje) /usr/lib/ssl/misc openssl ca -gencrl -out demoCA/crl/crl.pem openssl crl -in demoCA/crl/crl.pem -outform der -out demoCA/crl/cert.crl oraz ca to musimy zrobić linki symboliczne z utworzonych plików do : # ln -s demoCA/crl/crl.pem `openssl x509 -hash -noout -in demoCA/cacert.pem`.r0 #ln -s demoCA/cacert.pem `openssl x509 -hash -noout -in demoCA/cacert.pem`.0 Wiersz peers_identifier asn1dn; może wyglądac inaczej patrz na końcu artykułu . 15 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Od strony OpenWrt to już wszystko. Już nic więcej nie musimy robić. jakby były jakieś problemy z certyfikatami obejrzyj sobie przykładowe wygenerowane przeze mnie certyfikaty Punkt.9 UWAGA !!! ERRATA W Backfire ostatnich wydania jest błąd który winien zostać poprawiony. Niestety developerzy tak przerobili firewalla że nie da się w żaden sposób wstawić na początek głównych łańcuchów własnych reguł iptables. Jeśli masz problemy z nawiązaniem połączenia zerknij koniecznie na reguły firewalla iptables -t nat -L -v w szczególności łańcuchów POSTROUTING. Nasze reguły dodane do firewalla MUSZĄ być przed łańcuchami zone_lan_nat zone_wan_nat 16 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 inaczej nie będzie poprawnie działał tunel Czyli jeśli masz np. taką kolejność Chain POSTROUTING (policy ACCEPT 246 packets, 18433 bytes) pkts bytes target prot opt in out source destination 854 61486 zone_wan_nat all -- any eth0.2 anywhere anywhere 1 84 zone_lan_nat all -- any br-lan anywhere anywhere 246 18433 postrouting_rule all -- any any anywhere anywhere to nie będą działać wpisy w postrouting_rule. Nawet jak dodasz reguły w /etc/firewall.user do głównego łańcucha POSTROUTING to przynajmniej na dzień dzisiejszy reguły zostaną dodane za łańcuchami zone_lan_nat i zone_wan_nat Jedynym rozwiązaniem jest przeniesienie naszych reguł do skryptu uruchamiającego firewall /etc/init.d/racoon Czyli usuwamy nasze wpisy z pliky /etc/firewall.user i wstawiamy je np. tak jak poniżej: Plik /etc/init.d/racoon winien zawierać: #!/bin/sh /etc/rc.common START=98 start() { echo Uruchamiam tunel ipsec racoon... if [ ! -e /var/racoon ] 17 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 then mkdir /var/racoon fi setkey -f /etc/racoon/setkey.conf racoon -f /etc/racoon/racoon.conf #reduły dla xl2tpd + racoon iptables -I INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT iptables -I FORWARD -i ppp+ -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I FORWARD -i ppp+ --src 192.168.222.10 -j ACCEPT iptables -I INPUT -i ppp+ -p tcp --dport 53 -j ACCEPT iptables -I INPUT -i ppp+ -p udp --dport 53 -j ACCEPT iptables -t nat -I postrouting_rule -p ipcomp -j ACCEPT iptables -t nat -I postrouting_rule -p ah -j ACCEPT iptables -t nat -I postrouting_rule -p esp -j ACCEPT } stop() { killall racoon #reduły dla xl2tpd + racoon 18 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 iptables -D INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT iptables -D FORWARD -i ppp+ -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -D FORWARD -i ppp+ --src 192.168.222.10 -j ACCEPT iptables -D INPUT -i ppp+ -p tcp --dport 53 -j ACCEPT iptables -D INPUT -i ppp+ -p udp --dport 53 -j ACCEPT iptables -t nat -D postrouting_rule -p ipcomp -j ACCEPT iptables -t nat -D postrouting_rule -p ah -j ACCEPT iptables -t nat -D postrouting_rule -p esp -j ACCEPT } Alternatywą w/w zmian jest uaktualnienie pakietu firewall do najnowszej wersji opkg install http://ecco.selfip.net/backfire/packages/firewall_2-21_all.ipk po wgraniu w/w aktualizacji reguły spokojnie mogą zostać jak w oryginalnym opisie. 19 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Konfigurację klientów l2tp+ipsec opisałem na końcu mojego artykułu . Konfiguracja klienta l2tp+ipsec na podstawie OpenWrt 8.09.1 Przedstawię tylko pliki konfiguracyjne ponieważ opis w zasadzie jest podobny jak wyżej (położenie plików konfiguracyjnych, certyfikatów, etc.) Konfiguracja xl2tpd na client Openwrt: 20 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Zawartość pliku /etc/xl2tpd/xl2tpd.conf: [global] port = 1701 access control = no ; [lac nazwa_clienta] lns = 218.97.26.22 length bit = yes require chap = yes refuse pap = yes require authentication = yes name = formaplan ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd Zawartość pliku /etc/ppp/options.xl2tpd: user username_vpn noipdefault #usepeerdns noaccomp noauth idle 1800 mtu 1460 mru 1460 refuse-eap debug logfd 2 logfile /var/log/xl2tpd.log ipcp-accept-local ipcp-accept-remote nodefaultroute lock crtscts connect-delay 5000 21 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 Zawartość pliku /etc/ppp/chap-secrets: # Secrets for authentication using CHAP # client server secret IP addresses username_vpn * password_vpn * Konfiguracja Racoon na client Openwrt: Plik konfiguracyjny /etc/racoon/racoon.conf winien wyglądać następująco: path certificate "/etc/racoon/certs"; log info; timer { natt_keepalive 10sec; } remote 218.97.26.22 { 22 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 exchange_mode main; doi ipsec_doi; generate_policy on; situation_identity_only; lifetime time 28800 sec; my_identifier asn1dn; peers_identifier asn1dn; verify_identifier on; verify_cert off; ca_type x509 "/etc/ssl/cacert.pem"; certificate_type x509 "newcert.pem" "newkey.pem"; passive off; initial_contact on; nat_traversal on; #ike_frag=on; proposal_check obey; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method rsasig; dh_group 2; } } sainfo anonymous { pfs_group 2; lifetime time 3600 sec; encryption_algorithm aes,3des ; authentication_algorithm hmac_sha1,hmac_md5 ; compression_algorithm deflate; } Plik /etc/racoon/setkey.conf winien wyglądać: #!/usr/sbin/setkey -f flush; spdflush; 23 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 #FPW spdadd 0.0.0.0/0 218.97.26.22[1701] udp -P out ipsec esp/transport//require; spdadd 218.97.26.22[1701] 0.0.0.0/0 udp -P in ipsec esp/transport//require; Plik /etc/init.d/racoon winien zawierać: #!/bin/sh /etc/rc.common START=60 start() { echo Uruchamiam tunel ipsec racoon... if [ ! -e /var/racoon ] then mkdir /var/racoon fi setkey -f /etc/racoon/setkey.conf racoon -f /etc/racoon/racoon.conf } stop() { killall racoon } a następnie wykonać /etc/init.d/racoon enable 24 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 /etc/init.d/racoon start /etc/init.d/xl2tpd enable /etc/init.d/xl2tpd start Konfiguracja firewalla na client l2tp OpenWrt: Zawartość pliku /etc/config/firewall config rule option src wan option proto esp option target ACCEPT config rule option src wan option proto ah option target ACCEPT config rule option src wan option proto ipcomp option target ACCEPT config rule option dest_port 500 option proto udp option target ACCEPT 25 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 config rule option dest_port 4500 option proto udp option target ACCEPT config include option path /etc/firewall.user Zawartość pliku /etc/firewall.user: #reduły dla xl2tpd + racoon iptables -I INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT iptables -I FORWARD -i ppp+ -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I FORWARD -i ppp+ --src 192.168.222.1 -j ACCEPT iptables -t nat -I postrouting_rule -p ipcomp -j ACCEPT iptables -t nat -I postrouting_rule -p ah -j ACCEPT iptables -t nat -I postrouting_rule -p esp -j ACCEPT 26 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 UWAGA !!! ERRATA Patrz errate powyżej. schemat podobny. Jak nie działa przenieść reguły do pliku /etc/init.d/racoon I to już wszystko jeśli chodzi o konfigurację klienta l2tp po ipsec dla OpenWrt. Uruchomienie tunelu na OpenWrt: Aby uruchomić/zestawić połaczenie wydaj komendę: echo "c nazwa_clienta" > /var/run/xl2tpd/l2tp-control route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.222.1 Aby wyłączyć/zerwać połączenie wydaj komendę: echo "d nazwa_clienta" > /var/run/xl2tpd/l2tp-control gdzie "nazwa_clienta" to nasza nazwa zdefiniowana w sekcji LAC w pliku xl2tpd.conf. 27 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 UWAGI: Jest to połączenie VPN typu host-net. To nie jest tunel łączący dwie sieci. Dlatego zestawienie tunelu jest ręcznie robione. Pewnie dzięki odpowiedniej konfiguracji routingu i firewala dało by się uzyskać połączenie typu net-net. Konfiguracja działa bez problemu za natem. Ps. Możemy uzyskać połączenie typu net->net (takie pseudo tunel). Ważne jest to, że mamy dostęp do sieci odległej z każdego komputera w naszej sieci. Wadą jest to, że z odległej sieci będzie ciężko się dostać do naszych kompów wewnątrz bo są po prostu za NAT. Do zrobienia połączenia po prostu użyjemy SNAT. Aby uruchomić/zestawić połączenie wydaj na routerze z OpenWrt poniższe komendy: iptables -t nat -I POSTROUTING -d 192.168.1.0/24 -j SNAT --to 192.168.222.10 echo "c nazwa_clienta" > /var/run/xl2tpd/l2tp-control route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.222.1 iptables -I FORWARD --src 10.0.0.0/24 -j ACCEPT ip route flush cache Aby wyłączyć/zerwać połączenie wydaj komendę: 28 / 29 l2tp czyli VPN zestawiony na podstawie xl2tpd + ipsec racoon na certyfikatach - 8.09.1 Wpisany przez rpc poniedziałek, 02 listopada 2009 11:11 - Poprawiony piątek, 18 lutego 2011 17:39 iptables -t nat -D POSTROUTING -d 192.168.1.0/24 -j SNAT --to 192.168.222.10 echo "d nazwa_clienta" > /var/run/xl2tpd/l2tp-control route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.222.1 iptables -D FORWARD --src 10.0.0.0/24 -j ACCEPT ip route flush cache gdzie 10.0.0.0/24 to nasza sieć wewnętrzna w domu 192.168.222.10 to adres ip jaki otrzymaliśmy od serwera l2tp 192.168.222.1 to adres ip gw. połączenia Peer to Peer od strony firmy czyli serwera l2tp Jak chcemy możemy sobie wrzucić to wszystko do skryptu i jego odpalać. 29 / 29