背景
自宅に wifi 接続できない HDD レコーダーがあった。が、家庭内で LAN ケーブルは伸ばしたくない。 PXE ブートさせたい。かつ wifi で行いたい(PXE するマシンとイーサネットコンバーターは別マシンの構成)
つまりイーサネットコンバーターが欲しかった。 ラズパイをイーサネットコンバーターにする場合、内部的に DHCP を建てる設定例があったが、 できれば同一ネットワークでコンバーターが透過的に動作するようなものが欲しかった。 手軽に使える SoftEther でレイヤー 2 カスケードする設定で接続した。
ネットワーク構成
SoftEther のクライアント、サーバー共にラズベリーパイをGenPi64でセットアップして利用。 ただ nmcli( NetworkManager の CLI ツール )が使えれば他構成でもセットアップできそう。
HDDレコーダー and PXEブートしたいマシン => GenPi64, SoftEtherクライアント => GenPi64, SoftEtherサーバー => Internetという形で外部に出れるようにする。
SoftEther サーバーではイーサネットインターフェースのみの運用とし、tap デバイスをブリッジする構成にした。
方針としては、基本的に使わない機能は off、必要に応じて有効にする。
- 仮想ハブ名: VpnHub1
- ダイナミック DNS 機能、DDDS: Off
- VPN Azure クラウド: off
- IPsec/L2TP/L2TPv3 サーバー機能の設定: off
- OpenVPN/MS-SSTP サーバー機能設定: off
- SecurNAT 機能、DHCP サーバー機能は使わない。
- カスケード接続は使う*(レイヤ 2 カスケード接続になる)
- SoftEther のサーバー/クライアント共に [ローカルブリッジ設定]=>[eth0] と物理インターフェースでブリッジを行う
ヘルプ
sudo vpncmd localhost /SERVER /CMD 'help'環境
サーバー/クライアントともに共通
- Gentoo Linux
- Raspberry Pi 4B, 3B/B+ 64-bit Lite
- 2021/08/10 ころセットアップ
- 下記の手順は OS セットアップは済んだ状態からのもの
イーサネットコンバーターになる SoftEther クライアントでの事前作業
PC => eth => wifi => SoftEther サーバー => インターネット と接続するので、
- wifi のセットアップ
- eth の設定の無効化 を行う。
手順
ネットワークデバイス名を確認。GenPi64 では
- wlan0 が wifi
- eth0 がイーサネット というインターフェース名だった。
nmcli dev statuswifi をオンにして IP アドレスを確認。
sudo nmcli d wifi connect <ssid> password <pass> ifname wlan0
ip awifi 側の IP アドレスで ssh し直したのち eth の IP アドレスを無くす
sudo nmcli connection mod "有線接続 1" connection.autoconnect no
sudo rebootラズパイを再起動、wifi 経由で ssh、eth0 がアクティベートされない事を確認。
nmcli dev statusSoftEther 設定*( サーバー/クライアント共通 )
DDns、NAT トラサーバル、IPv6 の無効化。 デーモンを停止してから行う。
sudo vpnserver stopsudo vi /usr/vpnserver/vpn_server.config変更箇所
- DDnsClient.Disabled を true
- ServerConfiguration.DisableIPv6Listener true
- ServerConfiguration.DisableNatTraversal true
SoftEther の設定箇所が多いのでバッチファイルを作成し、 下記のように、 /IN: オプションの引数にわたして実行する。この例では setup.txt に処理を記載していっている。
sudo vpncmd localhost /SERVER /IN:setup.txt内容は vpncmd で接続した後に行う処理を書いたものになる。
設定方法については 【Centos7】SoftEther Server 構築手順【L2TP/IPsec】を参考にした。
setup.txt 内の下記の
- ServerPasswordSet
- HubCreate VpnHub0_dummy /PASSWORD:
- HubCreate VpnHub1 /PASSWORD:
- UserPasswordSet HubUser1 /PASSWORD:
setup.txt のサンプル
KeepDisable
OpenVpnEnable no /PORTS:1194
SstpEnable no
VpnAzureSetEnable no
VpnOverIcmpDnsEnable /ICMP:no /DNS:no
ListenerCreate 44444
ListenerDelete 443
ListenerDelete 992
ListenerDelete 1194
ListenerDelete 5555
HubDelete DEFAULT
HubCreate VpnHub0_dummy /PASSWORD:<password>
HubCreate VpnHub1 /PASSWORD:<password>
IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /PSK:ipsecvpn /DEFAULTHUB:VpnHub0_dummy
Hub VpnHub0_dummy
SetEnumDeny
SetMaxSession 1
Offline
Hub VpnHub1
SetEnumDeny
SetMaxSession 1
OnLine
NatDisable
DhcpDisable
UserCreate HubUser1 /GROUP:none /REALNAME:none /NOTE:none
UserPasswordSet HubUser1 /PASSWORD:<password>vpnserver をスタートしてから実行
sudo vpnserver start
sudo vpncmd localhost /SERVER /IN:setup.txt以降、接続ポートは 44444 になるので下記のように接続する。
sudo vpncmd localhost:44444 /SERVER下記コマンドで変更した内容を確認する。
- HubList
- ListenerList
- IPsecGet
- NatGet
- SecureNatStatusGet
- UserList
SoftEther クライアント特有の設定
VpnHub1 で「カスケード接続の管理」から Proxy にレイヤー 2 でカスケードする。 ServerPasswordSet で SoftEther サーバーのパスワードを設定し台帳にメモ。 BridgeCreate で SoftEther の仮想ハブとイーサネットの物理ポートを接続する*(物理ポート配下のデバイスと SoftEther の仮想ハブが接続される) CascadePasswordSet で HubUser1 のユーザーパスワードをセットした。
ServerPasswordSet <password>
BridgeCreate VpnHub1 /DEVICE:eth0
Hub vpnHub1
CascadeCreate cascade_proxy /SERVER:<プロキシーサーバーのIPアドレス>:44444 /HUB:VpnHub1 /USERNAME:HubUser1
CascadePasswordSet cascade_proxy /PASSWORD:<password> /TYPE:standard
CascadeOnline cascade_proxySoftEther サーバー特有の設定
ServerPasswordSet で SoftEther サーバーのパスワードを設定し台帳にメモ。 ローカルブリッジの設定を行い、物理デバイスを eth0 に紐付ける(tap デバイスは作らない)
ServerPasswordSet <password>
BridgeCreate VpnHub1 /DEVICE:eth0SoftEther の通常の使用ポート
接続できる方法を多く用意するためだろうか、デフォルトで開くポートがいくつかある。
| ポート | 用途 |
|---|---|
| TCP 443 | SSL 用 |
| TCP 992 | TELNET over SSL (Telnets) |
| TCP 1194 | OpenVpn |
| TCP 5555 |
失敗のメモ
sudo nmcli d disconnect eth0 だと再起動後、eth0 が有効になったため、 nmcli connection mod “有線接続 1” connection.autoconnect no を用いるようにした。
参考
VPN サーバー構築(SoftEther VPN Server) Linux での VPN クライアントの CLI での接続方法が参考になった。
【Centos7】SoftEther Server 構築手順【L2TP/IPsec】 この人すごい。CLI での設定例が非常に参考になる。
3.6 ローカルブリッジ オフィシャルページの説明。これがやりたい。
Linux や Solaris の場合は、ローカルブリッジ用 LAN カードに対して「ifconfig」コマンドなどで、 IP アドレス「0.0.0.0」を割り当てるなどの方法で 、同等の効果を得ることができます。 なるほど。
SoftEther VPN サーバのローカルブリッジをコマンド操作だけで設定する方法 今回の私の目的、イーサネットコンバーターだと、 wifi インターフェースだけ IP アドレスがあれば良く、 イーサネットインターフェースには IP アドレスは不要なので参考になった。 「tap デバイスは不要」という点は非常に参考になった。確かにそうだ。
6.2.3 vpncmd コマンド起動時のコマンドラインパラメータ 処理の自動化の参考になった。
sudo vpncmd localhost /SERVER /IN:setup.txtのようにする事でバッチ処理が可能。
SoftEherVPN で TAP デバイスとのブリッジが失敗する場合 上記の方法では tap デバイスを使わなくても済んだが、使うようになったら参考にする。
ESXi 上の仮想マシンに SoftEther VPN Server を入れる際の注意点 プロミスキャス・モードでリッスンできる必要がある
Android から接続 [L2TP/IPsec サーバを構築してアンドロイド端末で VPN を利用する]*(https://mano.xyz/post/2016-06-22-l2tp-ipsec/)