NTT フレッツ HGW(RP-500MI)のvpnサーバーに ubuntu からつなぐ
NTT が提供する ホームゲートウェイ・光コンバータ一・ひかり電話の一体型機器にはVPNサーバー機能がある。
NTT 東
NTT西
- https://www.ntt-west.co.jp/kiki/download/flets/pr500mi/PR-500MI_detail/
- https://www.ntt-west.co.jp/kiki/download/flets/index.html
次のようにVPNサーバーのメニューが提供される
このVPNサーバー(L2TP/IPsec)にUbuntuから接続してみる。
準備
ホスト名のかわりに/etc/hsotsを使う。
cat <<EOF >> /etc/hosts 10.2.10.10 pr500.mi EOF
ipsc の準備と接続
インストール
sudo apt install strongswan
ipsec 設定
- /etc/ipsec.conf
- /etc/ipsec.secrets
コマンドから流し込む
## 設定 cat <<EOF >> /etc/ipsec.conf conn vpn type=transport authby=secret rekey=yes keyingtries=1 keyexchange=ikev1 ike=aes256-sha-modp1024 esp=aes256-sha1 left=%any leftprotoport=udp/l2tp right=pr500.mi rightid=%any rightprotoport=udp/l2tp dpdaction=restart closeaction=restart auto=add ## 手動の場合 # auto=start ## 自動接続をする場合 EOF ## 共有鍵 cat <<EOF >> /etc/ipsec.secrets : PSK 3vBhtdpWkK7Ku4PxQnnj
ipsec の接続テスト
systemctl reload ipsec ipsec status vpn ipsec up vpn ipsec down vpn ipsec up vpn
接続の確認
Security Associations (1 up, 0 connecting): vpn[60]: ESTABLISHED 54 minutes ago,
接続が確率(Established)すればOK。
これで SRC/UDP/1701 から DST/UDP/1701への通信が双方向で暗号化される。
細かく確認したいときは 過去記事:パケットがトンネルに入るか否かを確認する。(l2tp/ipsc)を参考にする
L2TP を接続する
インストール
sudo apt install xl2tpd
xlt2pd の設定
cat <<EOF >> /etc/xl2tpd/xl2tpd.conf [lac pr500mi] lns = pr500.mi require authentication = yes pppoptfile = /etc/ppp/options.l2tpd.pr500.mi length bit = yes require chap= yes refuse pap = yes ppp debug = yes redial = yes redial timeout = 10 max redials = 6 EOF
LACで使うPPP設定
cat <<EOF > /etc/ppp/options.l2tpd.pr500.mi name my-user password my-password mtu 1280 noauth EOF
接続テスト
CTL=/var/run/xl2tpd/l2tp-control sudo xl2tpd-control -d -c $CTL available sudo xl2tpd-control -d -c $CTL connect-lac pr500mi sudo xl2tpd-control -d -c $CTL disconnect-lac pr500mi sudo xl2tpd-control -d -c $CTL status-lac pr500mi
うまく接続できないときは、自動起動を使わずに手動で起動する
## 自動起動を止めて systemctl stop xl2tpd systemctl disable xl2tpd ## 手動で起動する /usr/sbin/xl2tpd -D \ -c /etc/xl2tpd/xl2tpd.conf \ -C /var/run/xl2tpd/xl2tpd-control ## ログを見ながら試す CTL=/var/run/xl2tpd/xl2tpd-control xl2tpd-control -d -c $CTL available xl2tpd-control -d -c $CTL connect-lac pr500m
無事に接続できた。
接続済みになるはずである。
IPアドレスがわからなくなる。
NTTのHGWのPPPoEのIPアドレスがわからなくなるので、通知をSMTPですることが可能だが。メールでIPを通知させることができる。
ただこれ見てる限り、SMTPSには未対応っぽいので、現在ではまるで使えないと思う。
v6 アドレスについて
NTTの仕様を確認したが、v6アドレス(フレッツ網v6・IPoEアドレス)でVPNを張ることはできない。
ただし、IPv6・PPPoEであれば接続が可能かと思われる。
raspi などでddns
ddns(mydns.jp など) を使うなり、ドメインを何処かホスティング(Cloudflare・Route53)するなりして、IPアドレスがわかるようにAレコードを更新するとか、Raspiで定期的に書き込みに行くしかしかない。
IPoE/IPv6環境であれば、v6アドレスは変わらないので、v6アドレス経由でSSHできるようにして、SSHしてからPPPoEのアドレスをコマンドで確認するしかない。
v6アドレスであれば、VPNなどしなくてもSSH環境が用意に作れるので、VPN環境をわざわざ作る必要もないが、SSH踏み台としてのRaspiがダウンしたときとか予備回線として有能である。
バージョン
利用したソフトウェアのバージョンについて。
apt で導入された一覧
strongswan/jammy-updates,jammy-security,now 5.9.5-2ubuntu2.1 all [installed] xl2tpd/jammy-updates,now 1.3.16-1ubuntu0.1 arm64 [installed]
Ubuntu 22.04.2 LTS # /etc/lsb-release xl2tpd version: xl2tpd-1.3.16 # xl2tpd -v Linux strongSwan U5.9.5/K5.15.0-1034-raspi # ipsec --version
速度テスト
簡易な速度テストの結果です。 VPNありだと、VPNなし(サーバクライアント側双方は60-80Mbps程度)に比べて15-20%程度に速度低下しました。MTUなどで改善の余地はあるかもしれないけど、NATやパケット化やカプセル化によるスループットの低下は相当大きいと思われる。
速度についてはISPのアップロード制限(PPPoE同士)やHGWの性能の上限にぶち当たる。といういくつかの要因が考えられる。
常用するVPNであれば、Wireguardや単純なIPSecやikev2のほうが良いかもしれない。
関連記事
- https://takuya-1st.hatenablog.jp/entry/2023/08/03/182213
- https://takuya-1st.hatenablog.jp/entry/2023/08/08/172452
- https://takuya-1st.hatenablog.jp/entry/2022/11/01/173000
参考資料
- https://ttanimu.wordpress.com/2017/04/26/ubuntu%E3%81%8B%E3%82%89%E8%87%AA%E5%AE%85%E3%81%ABvpn%E3%81%A7%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9/
- https://manual.iij.jp/iot/doc/53257688.html
- https://0sn.net/posts/20230209/archlinux-l2tpipsec-cli/
- https://www.ingenious.jp/articles/howto/raspberry-pi-howto/l2tp-ipsec-vpn-client/