Jak postawić serwer IPsec/l2tp na OpenWrt ? Poniższa konfiguracja działa z Androidem
Obraz został skompilowany ze wszystkimi pakietami z poniższej listy zaczynających się od kmod, czyli ze wszystkimi potrzebnymi modułami dla IPsec. Cała lista zainstalowanych pakietów:
opkg list_installed base-files - 43.15-r26590 block-extroot - 0.0.1-2 block-mount - 0.1.0-2 busybox - 1.15.3-2 crda - 1.1.1-1 dnsmasq - 2.55-6 dropbear - 0.52-4 e2fsprogs - 1.41.11-1 firewall - 2-24 hotplug2 - 1.0-beta-2 ip - 2.6.29-1-2 ipsec-tools - 0.7.3-3 iptables - 1.4.6-2 iptables-mod-conntrack - 1.4.6-2 iptables-mod-ipsec - 1.4.6-2 iptables-mod-nat - 1.4.6-2 iw - 0.9.22-1 kernel - 2.6.32.27-1 kmod-b43 - 2.6.32.27+2011-04-06-2 kmod-b43legacy - 2.6.32.27+2011-04-06-2 kmod-cfg80211 - 2.6.32.27+2011-04-06-2 kmod-crc-ccitt - 2.6.32.27-1 kmod-crypto-aes - 2.6.32.27-1 kmod-crypto-arc4 - 2.6.32.27-1 kmod-crypto-authenc - 2.6.32.27-1 kmod-crypto-core - 2.6.32.27-1 kmod-crypto-des - 2.6.32.27-1 kmod-crypto-hmac - 2.6.32.27-1 kmod-crypto-md5 - 2.6.32.27-1 kmod-crypto-sha1 - 2.6.32.27-1 kmod-diag - 2.6.32.27-7.1 kmod-fs-ext2 - 2.6.32.27-1 kmod-ipip - 2.6.32.27-1 kmod-ipsec - 2.6.32.27-1 kmod-ipsec4 - 2.6.32.27-1 kmod-ipt-conntrack - 2.6.32.27-1 kmod-ipt-core - 2.6.32.27-1 kmod-ipt-ipsec - 2.6.32.27-1 kmod-ipt-nat - 2.6.32.27-1 kmod-iptunnel4 - 2.6.32.27-1 kmod-mac80211 - 2.6.32.27+2011-04-06-2 kmod-nls-base - 2.6.32.27-1 kmod-pcmcia-core - 2.6.32.27-1 kmod-pcmcia-yenta - 2.6.32.27-1 kmod-ppp - 2.6.32.27-1 kmod-pppoe - 2.6.32.27-1 kmod-scsi-core - 2.6.32.27-1 kmod-switch - 2.6.32.27-4 kmod-usb-core - 2.6.32.27-1 kmod-usb-ohci - 2.6.32.27-1 kmod-usb-storage - 2.6.32.27-1 kmod-usb-uhci - 2.6.32.27-1 kmod-usb2 - 2.6.32.27-1 libblkid - 1.41.11-1 libc - 0.9.30.1-43.15 libext2fs - 1.41.11-1 libgcc - 4.3.3+cs-43.15 libgmp - 4.3.1-2 libip4tc - 1.4.6-2 libip6tc - 1.4.6-2 libiptc - 1.4.6-2 libnl-tiny - 0.1-1 libopenssl - 0.9.8p-1 libpthread - 0.9.30.1-43.15 librt - 0.9.30.1-43.15 libuci - 12012009.6-3 libuuid - 1.41.11-1 libxtables - 1.4.6-2 mtd - 13 nvram - 7 opkg - 576-1 ppp - 2.4.4-16 ppp-mod-pppoe - 2.4.4-16 strongswan4 - 4.3.7-1 strongswan4-app-charon - 4.3.7-1 strongswan4-app-pluto - 4.3.7-1 strongswan4-default - 4.3.7-1 strongswan4-mod-aes - 4.3.7-1 strongswan4-mod-attr - 4.3.7-1 strongswan4-mod-des - 4.3.7-1 strongswan4-mod-dnskey - 4.3.7-1 strongswan4-mod-fips-prf - 4.3.7-1 strongswan4-mod-gmp - 4.3.7-1 strongswan4-mod-hmac - 4.3.7-1 strongswan4-mod-md5 - 4.3.7-1 strongswan4-mod-pem - 4.3.7-1 strongswan4-mod-pgp - 4.3.7-1 strongswan4-mod-pkcs1 - 4.3.7-1 strongswan4-mod-pubkey - 4.3.7-1 strongswan4-mod-random - 4.3.7-1 strongswan4-mod-resolve - 4.3.7-1 strongswan4-mod-sha1 - 4.3.7-1 strongswan4-mod-sha2 - 4.3.7-1 strongswan4-mod-stroke - 4.3.7-1 strongswan4-mod-updown - 4.3.7-1 strongswan4-mod-x509 - 4.3.7-1 strongswan4-mod-xcbc - 4.3.7-1 strongswan4-utils - 4.3.7-1 uci - 12012009.6-3 udevtrigger - 106-1 wireless-tools - 29-4 wpad-mini - 20110402-1 xl2tpd - 1.2.5-1 zlib - 1.2.3-5
lista modyfikowanych plików:
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/xl2tpd/xl2tp-secrets
/etc/xl2tpd/xl2tpd.conf
/etc/ppp/options.xl2tpd
/etc/ppp/chap-secrets
/etc/config/firewall
/etc/init.d/firewall-user (nowy)
/etc/init.d/ipsec (nowy)
Instalacja potrzebnych pakietów:
opkg install xl2tpd opkg install strongswan4-default
konfiguracja ipsec
/etc/ipsec.conf
config setup nat_traversal=yes charonstart=yes plutostart=yes conn L2TP authby=psk pfs=no rekey=no type=transport left=x.x.x.x ; zew.addr.ip leftnexthop=%defaultroute leftprotoport=17/1701 right=%any rightprotoport=17/%any rightsubnetwithin=0.0.0.0/0 auto=add
ustawiamy haslo PSK dla ipsec
/etc/ipsec-secrets
: PSK "tajne_haslo"
Przygotowanie skryptu startowego dla ipsec
/etc/init.d/ipsec
#!/bin/sh /etc/rc.common START=60 start() { echo ipsec start ipsec start } stop() { ipsec stop killall ipsec killall starter killall pluto }
Ndajemy uprawnienia do wykoania i włączamy serwis ipsec
chmod 755 /etc/init.d/ipsec /etc/init.d/ipsec enable /etc/init.d/ipsec start
konfiguracja xl2tpd
/etc/xl2tpd/xl2tpd.conf
[global] debug network = yes debug tunnel = yes port = 1701 listen-addr = x.x.x.x [lns default] ip range = 192.168.254.202-192.168.254.210 local ip = 192.168.254.200 refuse pap = yes require chap = yes require authentication = yes name = user ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes
Konfiguracja opcji dla xl2tpd
vi /etc/ppp/options.xl2tpd
name user lock auth debug dump logfd 2 logfile /var/log/xl2tpd.log noccp novj novjccomp nopcomp noaccomp
Konfiguracja użytkowników i haseł dla xl2tps
vi /etc/ppp/chap-secrets
#USERNAME PROVIDER PASSWORD IPADDRESS user * tajne_haslo 192.168.254.202
Włączenie i uruchomienie xl2tpd
/etc/init.d/xl2tpd enable /etc/init.d/xl2tpd start
Zmiany w firewallu (defaultowy firewall zostnie wyłączony)
/etc/init.d/firewall disable touch /etc/init.d/firewall-user chmod 755 /etc/init.d/firewall-user
Firewall wraz ze skryptem startowym
vi /etc/init.d/firewall-user
#!/bin/sh /etc/rc.common i=/usr/sbin/iptables START=44 start() { # czyszcznie regul $i -F $i -X $i -X -t nat $i -F -t nat $i -X -t mangle $i -F -t mangle # localhost $i -A INPUT -i lo -j ACCEPT $i -A FORWARD -o lo -j ACCEPT $i -A OUTPUT -o lo -j ACCEPT # domyslna polityka $i -P OUTPUT ACCEPT $i -P FORWARD ACCEPT $i -P INPUT DROP $i -A INPUT -i eth0 -j ACCEPT $i -A INPUT -i eth0.0 -j ACCEPT $i -A INPUT -i br-lan -j ACCEPT $i -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $i -t nat -A POSTROUTING -o eth0.1 -j MASQUERADE #dhcp #$i -A INPUT -i eth0.1 -p udp --dport 68 -j ACCEPT #ssh $i -A INPUT -i eth0.1 -p tcp --dport 22 -j ACCEPT $i -A INPUT -m limit --limit 30/min -p tcp --dport 22 -j ACCEPT # ipsec + l2tp $i -A INPUT -i eth0.1 -p esp -j ACCEPT $i -A INPUT -i eth0.1 -p ah -j ACCEPT $i -A INPUT -i eth0.1 -p udp --dport 500 -j ACCEPT $i -A INPUT -i eth0.1 -p udp --dport 4500 -j ACCEPT $i -A INPUT -i eth0.1 -p udp --dport 1701 -j ACCEPT #Syn-flood protection: $i -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT #Furtive port scanner: $i -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT } stop() { $i -F $i -X $i -X -t nat $i -F -t nat $i -X -t mangle $i -F -t mangle $i -P INPUT ACCEPT $i -P OUTPUT ACCEPT $i -P FORWARD ACCEPT }
Włączenie nowego firewalla
/etc/init.d/firewall-user start /etc/init.d/firewall-user enable
Ręczne startowanie serwisów
ipsec start xl2tpd -D
Debug tunelu
tail -f /var/log/xl2tpd.log
Manuale
http://linux.die.net/man/8/pppd
http://linux.die.net/man/5/xl2tpd.conf