SSTP IPv6 over IPv6で接続できたので、忘れないうちに本稿を挙げてみることにしました。
今回、SSTPサーバはsoftehter-vpnserver(Debian 12自前ビルド)、クライアントはDebian 12で自前ビルドのsstp-clientを使いました。
早速ですが設定です。IPv6で接続するためには、サーバーのDNS正引きでAAAAが引けるようにしておきます。Aレコードを同じDNS名にしていてクライアントがIPv4の接続も持っているとAレコード、つまりIPv4で接続しようとするので、Aレコードのホスト名とAAAAレコードのホスト名は分けておいたほうが無難です。
次に、SSTPサーバーは、softether vpnserverをインストールしました。Debian純正パッケージだとSSTPサーバが機能しないようなので、以前に投稿したパッケージを使ってみてください。また、softether-vpnserverをDebian 12上でle's encrypt の証明書をつかった構築はこちらにあります。
インストールがすんだら、Softetherサーバ管理マネージャーで接続し"OpenVPN/MS-SSTP設定"をクリックし、”MS-SSTP VPN ササーバー機能を有効にする”をチェックします。接続ユーザの登録ができていれば、基本的にはこれだけです。
つづいてクライアント側ですが、sstp-clientをインストールします。Debian 12純正パッケージだと依存パッケージが多いので、こちらは、依存関係のすくないsstp-clientパッケージの作成方法を投稿したので、よければ参考にしてみてください。なお設定は以下のようにしてみました。
プレフィックスはradvで取得させるので、サーバ側はsoftetherのブリッジデバイス(例としてtap_eth0)に対してradvが流れるようにしておいて下さい。
つづいて /etc/network/interfaces.d/sstp200 は以下のようにしてみました。
ifup sstp200とします。接続後しばらくして以下のようになっていればOKです。
今回、SSTPサーバはsoftehter-vpnserver(Debian 12自前ビルド)、クライアントはDebian 12で自前ビルドのsstp-clientを使いました。
早速ですが設定です。IPv6で接続するためには、サーバーのDNS正引きでAAAAが引けるようにしておきます。Aレコードを同じDNS名にしていてクライアントがIPv4の接続も持っているとAレコード、つまりIPv4で接続しようとするので、Aレコードのホスト名とAAAAレコードのホスト名は分けておいたほうが無難です。
次に、SSTPサーバーは、softether vpnserverをインストールしました。Debian純正パッケージだとSSTPサーバが機能しないようなので、以前に投稿したパッケージを使ってみてください。また、softether-vpnserverをDebian 12上でle's encrypt の証明書をつかった構築はこちらにあります。
インストールがすんだら、Softetherサーバ管理マネージャーで接続し"OpenVPN/MS-SSTP設定"をクリックし、”MS-SSTP VPN ササーバー機能を有効にする”をチェックします。接続ユーザの登録ができていれば、基本的にはこれだけです。
つづいてクライアント側ですが、sstp-clientをインストールします。Debian 12純正パッケージだと依存パッケージが多いので、こちらは、依存関係のすくないsstp-clientパッケージの作成方法を投稿したので、よければ参考にしてみてください。なお設定は以下のようにしてみました。
##/etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses user200@VPN * "SomeP@ssW0rds" * ##/etc/ppp/peers/sstp200 ######################################## remotename sstp200 linkname sstp200 ifname sstp200 ipparam sstp200 pty "sstpc --ipparam sstp200 --log-level 4 --nolaunchpppd ipv6-gw01.example.com" name user200@VPN plugin sstp-pppd-plugin.so sstp-sock /var/run/sstpc/sstpc-sstp200 usepeerdns #require-mppe require-mschap-v2 noauth lock refuse-pap refuse-eap refuse-chap refuse-mschap nobsdcomp nodeflate # Uncomment this if you want additional debug in your /var/log/messages debug noip +ipv6 ipv6 ::200 #2024/10/25: nodefaultroute6追加 nodefaultroute6 ########################################接続ユーザー名はユーザー名@仮想ハブ名ですので注意してください。また、ifnameをsstp200としていますが、この指定をするとインターエースがアップした時、このifnameで表示されます。(後述)
プレフィックスはradvで取得させるので、サーバ側はsoftetherのブリッジデバイス(例としてtap_eth0)に対してradvが流れるようにしておいて下さい。
interface tap_eth0 { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix 2001:db8:280:200::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; };今回は、インターフェースIDを固定で割り当てるため、ipv6の行で ::200 と指定しています。 動的に割り当てる場合は、ipv6の行をコメント化してください。
つづいて /etc/network/interfaces.d/sstp200 は以下のようにしてみました。
auto sstp 200 iface sstp200 inet ppp provider sstp200ipv6設定なのですが、inet6とするとpppキーワードを受け付けないので、上述のようにしています。接続とアドレス設定は/etc/ppp/peers/sstp200で行うのでこれで問題ないようです。
ifup sstp200とします。接続後しばらくして以下のようになっていればOKです。
17: sstp200: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 3 link/ppp inet6 2001:db8:280:200::200/64 scope global dynamic mngtmpaddr valid_lft 86397sec preferred_lft 14397sec inet6 fe80::1000 peer fe80::c851:47ff:feca:5147/128 scope link valid_lft forever preferred_lft foreverつづいて/etc/network/interfaces.sstp200を以下のように修正します。こうすることで外部からIPv6 over IPv6で接続できるようになります。
auto sstp200 iface sstp200 inet ppp provider sstp200 post-up sleep 10 post-up echo 200 sstp200 >> /etc/iproute2/rt_tables post-up ip -6 rule add from all to 2001:db8:280:200::/64 tab sstp200 priority 200 post-up ip -6 rule add to all from 2001:db8:280:200::/64 tab sstp200 priority 200 post-up ip -6 route add to 2001:db8:280:200::/64 dev sstp200 tab sstp200 post-up ip -6 route add to default via 2001:db8:280:200::1 dev sstp200 tab sstp200 post-down ip -6 rule del from all to 2001:db8:280:200::/64 tab sstp200 priority 200 post-down ip -6 rule del to all from 2001:db8:280:200::/64 tab sstp200 priority 200 post-down sed -i '/sstp200/d' /etc/iproute2/rt_tablesIPv6 over IPv4の記事はそこそこ見つかるのですが、IPv6 over IPv6の記事はあまり見かけないので参考になれば幸いです。今回は以上です。それでは。
コメント
コメントを投稿