「L2TP/IPsec VPN」の編集履歴(バックアップ)一覧はこちら

L2TP/IPsec VPN」(2013/05/06 (月) 18:01:03) の最新版変更点

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

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

スマホから家のPCにリモートアクセスしたく、ためしにVM上のLinuxを使ってL2TP/IPescのVPN環境を構築してみた。 環境 |No|分類|ソフト| |01|OS|Ubuntu Server13.04(VirtualBox上のVM)| |02|IPsec|Openswan| |03|L2TP|xl2tpd| ** Openswan、xl2tpdのインストール  以下のコマンドでインストールする。  途中X.509証明書を使うか聞かれるが、今回は使わないのでNoにした。 $ sudo apt-get install openswan xl2tpd ** IPsecの設定  以下のファイルに以下を設定。 *** /etc/ipsec.conf ・・・既存を修正 version 2.0 # conforms to second version of ipsec.conf specification config setup dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 oe=off protostack=netkey include /etc/ipsec.d/l2tp-psk.conf ***/etc/ipsec.d/l2tp-psk.conf ・・・ipsec.confからinclude 新規作成 conn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 forceencaps=yes also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no dpddelay=5 dpdtimeout=30 dpdaction=clear ikelifetime=8h keylife=1h type=transport left=192.168.11.200 <---VPNサーバのIPアドレス leftnexthop=%defaultroute leftprotoport=17/%any right=%any rightprotoport=17/%any ***/var/lib/openswan/ipsec.secrets.inc ・・・/etc/ipsec.secretsからincluse 新規作成 : PSK "事前共有鍵(任意の文字列)" ** L2TPの設定  以下のファイルに以下を設定。 ***/etc/xl2tpd/xl2tpd.conf ・・・既存修正 [global] ; Global parameters: [lns default] ; Our fallthrough LNS definition ip range = 192.168.11.100-192.168.11.103 ; * Allocate from this IP range  <--VPNクライアントに割り当てるIP local ip = 192.168.11.200 ; * Our local IP to use <---VPNサーバのIPアドレス length bit = yes require chap = yes refuse pap = yes require authentication = yes name = VPN ppp debug = yes pppoptfile = /etc/ppp/options.l2tpd.lns ***/etc/ppp/options.l2tpd.lns ・・・新規作成 asyncmap 0 auth local crtscts debug lock proxyarp refuse-pap refuse-chap refuse-mschap require-mschap-v2 logfile /var/log/xl2tpd.log lcp-echo-interval 30 lcp-echo-failure 4 ms-dns 8.8.8.8 # GoogleのDNSサーバ ms-dns 8.8.4.4 # GoogleのDNSサーバ  本ファイルの設定内容は、「man pppd」で参照できる。  ms-dnsはクライアントがWindowsのためのオプションのようだが、これを指定しないとVPN接続後にクライアント(今回はAndroidのスマホでためした)がDNSサーバが設定されておらず、ホスト名指定でインターネットに出られなかった。  また、この設定の有無にかかわらず、VPNサーバ上ではDNSによるアドレス解決ができなかった。digコマンドに明示的に外部のDNSサーバのIPを指定してもだめで、+vcをつけて、UDPではなくTCPで外部のDNSサーバを引きにいくと、うまく引ける。なお、内部のDNSサーバでは+vcをつけてもだめだった。原因不明だが、実害はないので無視している。 ***/etc/ppp/chap-secrets ・・・既存修正 "ユーザー名" * "パスワード" * **カーネルパラメータの設定 ***/etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 **ブロードバンドルータの設定  ブロードバンドルータはインターネット側からのパケットが許可されていないのと、NAPTでIPアドレスとポート変換が必要なので、以下のポートを開放し、VPNサーバの同ポートへ転送されるようにした。 |プロトコル|ポート番号|用途| |UDP|500|ISAKMP| |UDP|4500|IPsec NAT Traversal| **VPNサーバのファイアウォール設定 ***ポートの開放  Ubuntuなので、ufwコマンドを使って以下のポートを許可した。 $ sudo ufw allow 500/udp   <--- ISAKMP $ sudo ufw allow 4500/udp   <--- IPsec NAT Traversal $ sudo ufw allow 1701/udp   <--- L2TP $ sudo ufw allow to 192.168.11.200 proto esp  <--- VPNサーバ向けのESP ***VPNクライアントがインターネットに出られるようにする設定 /etc/default/ufwのDEFAULT_FORWARD_POLICYをACCEPTにする。 /etc/ufw/before.rulesの最後にあるCOMMITの前に以下を追加。 -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT -A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT -A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable COMMITの後に以下を追加 *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.11.0/24 -j MASQUERADE <--- クライアントのネットワークを指定 COMMIT 以上の設定で、AndroidのスマホからVPNで接続できた。
スマホから家のPCにリモートアクセスしたく、ためしにVM上のLinuxを使ってL2TP/IPescのVPN環境を構築してみた。 環境 |No|分類|ソフト| |01|OS|Ubuntu Server13.04(VirtualBox上のVM)| |02|IPsec|Openswan| |03|L2TP|xl2tpd| ** Openswan、xl2tpdのインストール  以下のコマンドでインストールする。  途中X.509証明書を使うか聞かれるが、今回は使わないのでNoにした。 $ sudo apt-get install openswan xl2tpd ** IPsecの設定  以下のファイルに以下を設定。 *** /etc/ipsec.conf ・・・既存を修正 version 2.0 # conforms to second version of ipsec.conf specification config setup dumpdir=/var/run/pluto/ nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10 oe=off protostack=netkey include /etc/ipsec.d/l2tp-psk.conf ***/etc/ipsec.d/l2tp-psk.conf ・・・ipsec.confからinclude 新規作成 conn L2TP-PSK-NAT rightsubnet=0.0.0.0/0 forceencaps=yes also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret pfs=no auto=add keyingtries=3 rekey=no dpddelay=5 dpdtimeout=30 dpdaction=clear ikelifetime=8h keylife=1h type=transport left=192.168.11.200 <---VPNサーバのIPアドレス leftnexthop=%defaultroute leftprotoport=17/%any right=%any rightprotoport=17/%any ***/var/lib/openswan/ipsec.secrets.inc ・・・/etc/ipsec.secretsからincluse 新規作成 : PSK "事前共有鍵(任意の文字列)" ** L2TPの設定  以下のファイルに以下を設定。 ***/etc/xl2tpd/xl2tpd.conf ・・・既存修正 [global] ; Global parameters: [lns default] ; Our fallthrough LNS definition ip range = 192.168.11.100-192.168.11.103 ; * Allocate from this IP range  <--VPNクライアントに割り当てるIP local ip = 192.168.11.200 ; * Our local IP to use <---VPNサーバのIPアドレス length bit = yes require chap = yes refuse pap = yes require authentication = yes name = VPN ppp debug = yes pppoptfile = /etc/ppp/options.l2tpd.lns ***/etc/ppp/options.l2tpd.lns ・・・新規作成 asyncmap 0 auth local crtscts debug lock proxyarp refuse-pap refuse-chap refuse-mschap require-mschap-v2 logfile /var/log/xl2tpd.log lcp-echo-interval 30 lcp-echo-failure 4 ms-dns 8.8.8.8 # GoogleのDNSサーバ ms-dns 8.8.4.4 # GoogleのDNSサーバ  本ファイルの設定内容は、「man pppd」で参照できる。  ms-dnsはクライアントがWindowsのためのオプションのようだが、これを指定しないとVPN接続後にクライアント(今回はAndroidのスマホでためした)がDNSサーバが設定されておらず、ホスト名指定でインターネットに出られなかった。  また、この設定の有無にかかわらず、VPNサーバ上ではDNSによるアドレス解決ができなかった。digコマンドに明示的に外部のDNSサーバのIPを指定してもだめで、+vcをつけて、UDPではなくTCPで外部のDNSサーバを引きにいくと、うまく引ける。なお、内部のDNSサーバでは+vcをつけてもだめだった。原因不明だが、実害はないので無視している。 ***/etc/ppp/chap-secrets ・・・既存修正 "ユーザー名" * "パスワード" * **カーネルパラメータの設定 ***/etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.accept_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 net.ipv4.conf.lo.accept_redirects = 0 net.ipv4.conf.lo.send_redirects = 0 **ブロードバンドルータの設定  ブロードバンドルータはインターネット側からのパケットが許可されていないのと、NAPTでIPアドレスとポート変換が必要なので、以下のポートを開放し、VPNサーバの同ポートへ転送されるようにした。 |プロトコル|ポート番号|用途| |UDP|500|ISAKMP| |UDP|4500|IPsec NAT Traversal| **VPNサーバのファイアウォール設定 最初はファイアウォールを無効にしていたが、それは危険ということで設定してみた。 ただし、意味はよくわかっておらず、以下のページを参考に設定してみただけ。勉強しないと・・・   ○○的な気まぐれ日記 http://mercurial.secret.jp/Whimsical_diary/archives/528 ***ポートの開放  Ubuntuなので、ufwコマンドを使って以下のポートを許可した。 $ sudo ufw allow 500/udp   <--- ISAKMP $ sudo ufw allow 4500/udp   <--- IPsec NAT Traversal $ sudo ufw allow 1701/udp   <--- L2TP $ sudo ufw allow to 192.168.11.200 proto esp  <--- VPNサーバ向けのESP ***VPNクライアントがインターネットに出られるようにする設定 /etc/default/ufwのDEFAULT_FORWARD_POLICYをACCEPTにする。 /etc/ufw/before.rulesの最後にあるCOMMITの前に以下を追加。 -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport l2tp -j ACCEPT -A INPUT -p udp -m udp --dport l2tp -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -p udp -m policy --dir out --pol ipsec -m udp --sport l2tp -j ACCEPT -A OUTPUT -p udp -m udp --sport l2tp -j REJECT --reject-with icmp-port-unreachable COMMITの後に以下を追加 *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.11.0/24 -j MASQUERADE <--- クライアントのネットワークを指定 COMMIT 以上の設定で、AndroidのスマホからVPNで接続できた。

表示オプション

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