OpenWRT L2TP > IPSec(racoon + xl2tpd + pppd)

「OpenWRT L2TP/IPSec(racoon + xl2tpd + pppd)」の編集履歴(バックアップ)一覧はこちら

OpenWRT L2TP/IPSec(racoon + xl2tpd + pppd)」(2014/12/31 (水) 23:58:11) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

*L2TP/IPsec(racoon + xl2tpd + pppd) *前提条件 -動的グローバルIPでDDNSを利用 -IPsecの認証は事前共有鍵方式 -NAT-Tのみ対応 -L2接続(VPN接続後はOpenWRTと同一セグメント) -GUIに影響が出ないようする -OpenWRTのLAN側IPは192.168.1.1/24 *動作確認環境 -BHR-4GRV(OpenWRT 14.07) -iPhone 3GS(iOS 6.1.6) -Windows 7 SP1(x64) *参考 https://forum.openwrt.org/viewtopic.php?id=30982 http://www.neko6.tk/archives/1263 http://wiki.openwrt.org/inbox/openswanxl2tpvpn https://code.google.com/p/debian-for-alix/wiki/L2TPIPsecVPN *パッケージのインストール パッケージをインストールする 依存で必要なパッケージもインストールされる # opkg update # opkg install ipsec-tools # opkg install xl2tpd # opkg install kmod-ipsec4 (IPv6の場合は代わりにkmod-ipsec6が必要と思われる) *DDNSの設定 crontabへDDNSの更新設定の登録 例えば、URLをリクエストしたIPでDNSを更新するサービスの場合で、1時間に1回更新する場合 */60 * * * * wget -O - 'DDNSサーバの設定URL' > /dev/null 2>&1 *IPsec(racoon)の設定 /etc/ipsec.confを作成する # cat > /etc/ipsec.conf flush; spdflush; spdadd 0.0.0.0/0 192.168.1.1[l2tp] udp -P in ipsec esp/transport//require; spdadd 192.168.1.1[l2tp] 0.0.0.0/0 udp -P out ipsec esp/transport//require; # *事前共有鍵の設定 # cat > /etc/racoon/psk.txt * 事前共有鍵の文字列 # */etc/racoon.confの設定 /etc/racoon.confのremote anonymousとsainfoを変更する 「https://forum.openwrt.org/viewtopic.php?id=30982」の設定値でも大丈夫 remote anonymous { exchange_mode aggressive,main; doi ipsec_doi; situation identity_only; generate_policy on; proposal_check obey; nat_traversal on; dpd_delay 20; support_proxy on; ike_frag on; passive on; lifetime time 2 min; proposal { encryption_algorithm aes; hash_algorithm sha256; authentication_method pre_shared_key; dh_group 2; } proposal { encryption_algorithm aes; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } proposal { encryption_algorithm 3des; hash_algorithm sha256; authentication_method pre_shared_key; dh_group 2; } proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } } sainfo anonymous { lifetime time 30 minutes; encryption_algorithm aes, rijndael, 3des; authentication_algorithm hmac_sha1; compression_algorithm deflate; pfs_group 2; } *xl2tpdの設定 /etc/xl2tpd/xl2tpd.confの設定をする ip rangeはDHCPサーバのIP配布レンジを避けること local ipに192.168.1.1を設定しないこと なお、接続台数が多い場合はip rangeのレンジを広げる # cat > /etc/xl2tpd/xl2tpd.conf [global] ipsec saref = yes listen-addr = 192.168.1.1 [lns default] ip range = 192.168.1.3-192.168.5 local ip = 192.168.1.2 length bit = yes pppoptfile = /etc/ppp/options.xl2tpd # *pppdの設定 /etc/ppp/options.xl2tpdを設定する mschap-v2を利用しているがIPsecで暗号化されているのでpapでも問題ない # cat > /etc/ppp/options.xl2tpd auth name l2tp refuse-pap refuse-chap refuse-mschap require-mschap-v2 ms-dns 192.168.1.1 netmask 255.255.255.0 proxyarp nodefaultroute lock deflate 15,15 bsdcomp 15,15 vj-max-slots 16 mtu 1350 mru 1350 #logfile /var/log/xl2tpd.log # /etc/ppp/chap-secretsを設定する # cat >> /etc/ppp/chap-secrets ユーザー名 l2tp パスワード * # *F/Wの設定 /etc/firewall.userへのルール追加 GUIでPort Foward設定すると、DNATでなくREDIRECTになるのでfirewall.userで設定する iptables -t nat -A zone_wan_prerouting -p udp -d 0.0.0.0/0 --dport 4500 -j DNAT --to-destination 192.168.1.1:4500 -m comment --comment "Allow-IPsec-IKE" iptables -t nat -A zone_wan_prerouting -p udp -d 0.0.0.0/0 --dport 500 -j DNAT --to-destination 192.168.1.1:500 -m comment --comment "Allow-IPsec-NAT-T" *firewall.userのreloadを有効化 これをしないとF/Wの再起動時にfirewall.userが読み込まれない /etc/config/frewallの「option reload '1'」を追記する config include option path '/etc/firewall.user' option reload '1' <- この行を追記する *F/Wの穴あけ firewall.userのDNATと合わせて、500と4500がオープンする 1701はDNATされていないのでWAN側は閉じたままになる /etc/config/frewallに追記 config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option dest_port '4500' option name 'Allow-IPsec-NAT-T ' option dest_ip '192.168.1.1' config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option dest_port '500' option name 'Allow-IPsec-IKE' option dest_ip '192.168.1.1' config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option dest_port '1701' option name 'Allow-L2TP' option dest_ip '192.168.1.1' *VPNセグメントの作成 VPN接続時にpppインターフェイスのzoneをlanに入れるため、ダミーのインターフェイス(ppp+)を作成する 但し、インターフェイス名がppp+なので各インターフェイスの正確なパケット数などはカウントされない ppp0、ppp1のように複数作成すれば、パケットなどをカウントできるようになる(が、面倒だと思う) /etc/config/networkに以下を追記 config interface 'VPN' option proto 'none' option ifname 'ppp+' *VPNセグメントをlan zoneに入れる /etc/config/firewallのzone lanのnetworkにVPNを追加する config zone option name 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' option family 'ipv4' option network 'lan VPN' <- この行にVPNを追加する *サービスの有効化 # /etc/init.d/racoon enable # /etc/init.d/xl2tpd enable # reboot *クライアントから接続する 各クライアントL2TP/IPsecを設定する。 Windowsクライアントの場合は、割り当てるIPによってネットワークセグメントが強制的に決められる。 10.0.0.0/8内で適当な10.*.*.*/24で割り当てると、10.0.0.0/8でルーティングが切られる。
*L2TP/IPsec(racoon + xl2tpd + pppd) *前提条件 -動的グローバルIPでDDNSを利用 -IPsecの認証は事前共有鍵方式 -NAT-Tのみ対応 -L2接続(VPN接続後はOpenWRTと同一セグメント) -GUIに影響が出ないようする -OpenWRTのLAN側IPは192.168.1.1/24 *動作確認環境 -BHR-4GRV(OpenWRT 14.07) -iPhone 3GS(iOS 6.1.6) -Windows 7 SP1(x64) *参考 https://forum.openwrt.org/viewtopic.php?id=30982 http://www.neko6.tk/archives/1263 http://wiki.openwrt.org/inbox/openswanxl2tpvpn https://code.google.com/p/debian-for-alix/wiki/L2TPIPSecVPN *パッケージのインストール パッケージをインストールする 依存で必要なパッケージもインストールされる # opkg update # opkg install ipsec-tools # opkg install xl2tpd # opkg install kmod-ipsec4 (IPv6の場合は代わりにkmod-ipsec6が必要と思われる) *DDNSの設定 crontabへDDNSの更新設定の登録 例えば、URLをリクエストしたIPでDNSを更新するサービスの場合で、1時間に1回更新する場合 */60 * * * * wget -O - 'DDNSサーバの設定URL' > /dev/null 2>&1 *IPsec(racoon)の設定 /etc/ipsec.confを作成する # cat > /etc/ipsec.conf flush; spdflush; spdadd 0.0.0.0/0 192.168.1.1[l2tp] udp -P in ipsec esp/transport//require; spdadd 192.168.1.1[l2tp] 0.0.0.0/0 udp -P out ipsec esp/transport//require; # *事前共有鍵の設定 # cat > /etc/racoon/psk.txt * 事前共有鍵の文字列 # */etc/racoon.confの設定 /etc/racoon.confのremote anonymousとsainfoを変更する 「https://forum.openwrt.org/viewtopic.php?id=30982」の設定値でも大丈夫 remote anonymous { exchange_mode aggressive,main; doi ipsec_doi; situation identity_only; generate_policy on; proposal_check obey; nat_traversal on; dpd_delay 20; support_proxy on; ike_frag on; passive on; lifetime time 2 min; proposal { encryption_algorithm aes; hash_algorithm sha256; authentication_method pre_shared_key; dh_group 2; } proposal { encryption_algorithm aes; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } proposal { encryption_algorithm 3des; hash_algorithm sha256; authentication_method pre_shared_key; dh_group 2; } proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } } sainfo anonymous { lifetime time 30 minutes; encryption_algorithm aes, rijndael, 3des; authentication_algorithm hmac_sha1; compression_algorithm deflate; pfs_group 2; } *xl2tpdの設定 /etc/xl2tpd/xl2tpd.confの設定をする ip rangeはDHCPサーバのIP配布レンジを避けること local ipに192.168.1.1を設定しないこと なお、接続台数が多い場合はip rangeのレンジを広げる # cat > /etc/xl2tpd/xl2tpd.conf [global] ipsec saref = yes listen-addr = 192.168.1.1 [lns default] ip range = 192.168.1.3-192.168.5 local ip = 192.168.1.2 length bit = yes pppoptfile = /etc/ppp/options.xl2tpd # *pppdの設定 /etc/ppp/options.xl2tpdを設定する mschap-v2を利用しているがIPsecで暗号化されているのでpapでも問題ない # cat > /etc/ppp/options.xl2tpd auth name l2tp refuse-pap refuse-chap refuse-mschap require-mschap-v2 ms-dns 192.168.1.1 netmask 255.255.255.0 proxyarp nodefaultroute lock deflate 15,15 bsdcomp 15,15 vj-max-slots 16 mtu 1350 mru 1350 #logfile /var/log/xl2tpd.log # /etc/ppp/chap-secretsを設定する # cat >> /etc/ppp/chap-secrets ユーザー名 l2tp パスワード * # *F/Wの設定 /etc/firewall.userへのルール追加 GUIでPort Foward設定すると、DNATでなくREDIRECTになるのでfirewall.userで設定する iptables -t nat -A zone_wan_prerouting -p udp -d 0.0.0.0/0 --dport 4500 -j DNAT --to-destination 192.168.1.1:4500 -m comment --comment "Allow-IPsec-IKE" iptables -t nat -A zone_wan_prerouting -p udp -d 0.0.0.0/0 --dport 500 -j DNAT --to-destination 192.168.1.1:500 -m comment --comment "Allow-IPsec-NAT-T" *firewall.userのreloadを有効化 これをしないとF/Wの再起動時にfirewall.userが読み込まれない /etc/config/frewallの「option reload '1'」を追記する config include option path '/etc/firewall.user' option reload '1' <- この行を追記する *F/Wの穴あけ firewall.userのDNATと合わせて、500と4500がオープンする 1701はDNATされていないのでWAN側は閉じたままになる /etc/config/frewallに追記 config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option dest_port '4500' option name 'Allow-IPsec-NAT-T ' option dest_ip '192.168.1.1' config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option dest_port '500' option name 'Allow-IPsec-IKE' option dest_ip '192.168.1.1' config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option dest_port '1701' option name 'Allow-L2TP' option dest_ip '192.168.1.1' *VPNセグメントの作成 VPN接続時にpppインターフェイスのzoneをlanに入れるため、ダミーのインターフェイス(ppp+)を作成する 但し、インターフェイス名がppp+なので各インターフェイスの正確なパケット数などはカウントされない ppp0、ppp1のように複数作成すれば、パケットなどをカウントできるようになる(が、面倒だと思う) /etc/config/networkに以下を追記 config interface 'VPN' option proto 'none' option ifname 'ppp+' *VPNセグメントをlan zoneに入れる /etc/config/firewallのzone lanのnetworkにVPNを追加する config zone option name 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' option family 'ipv4' option network 'lan VPN' <- この行にVPNを追加する *サービスの有効化 # /etc/init.d/racoon enable # /etc/init.d/xl2tpd enable # reboot *クライアントから接続する 各クライアントL2TP/IPsecを設定する。 Windowsクライアントの場合は、割り当てるIPによってネットワークセグメントが強制的に決められる。 10.0.0.0/8内で適当な10.*.*.*/24で割り当てると、10.0.0.0/8でルーティングが切られる。

表示オプション

横に並べて表示:
変化行の前後のみ表示: