賃貸無料ネット民でもグローバルIP欲しいよね
最近の賃貸ってインターネット無料のところが増えてきてますよね。
私が今住んでいるところもインターネットが無料なんですが、引越し当初はどうせクソ回線だしグローバルIP持てないとか論外だから自分でネット引いてやろうと思ってました。
ところがどっこい無料のくせに通信品質が最高で、100Mbps切ることがほぼなく500Mbps出る時もあるという超快適環境だったんですよね。
そのせいで自分でネットを引くという考えはどっかに吹き飛んでしまったのと、仕事環境が変わったせいで外から自宅にアクセスしたいというタイミングがかなり減ったので何もしていませんでした。
とはいえいざという時に不便ということもあって、重い腰を上げる事にしました。
ただ回線を引くのは非常にめんどくさいですしお金もかかるので、VPSを契約してVPS上のVPNサーバーに家の中のルーターを接続するっていう感じでやっていきます。
環境選定
まずは自宅ですが賃貸あるあるの壁にLANポートがあり、各部屋毎に分離されたLANがあるという感じです。
今まではこのLANにYAMAHAのルーターを繋いで、さらに下に各種機器を繋いでいました。
今回の構築にはRTX1300を使いましたが、1210でも830でも1200でもなんでもできると思います。
VPSはスペック不問なので、とりあえず安いところをということでWebarena Indigoにしました。Conohaとかが最後まで比較対象でしたが、長期契約がなんか嫌だったのでやめときました。
VPS環境設定
まずはWebARENA Indigoのインスタンスですが、Ubuntu24.04の1vCPU/1GBRAM/20GBSSD/100Mbpsのものを選択。
これで月額449円で運用可能です。
設定コマンドですが、カゴヤの解説サイトそのままでいけるのでこれをコピペしていきます。
まずはいろいろアップデート。
sudo apt update
sudo apt upgrade
次に必要なパッケージをインストール。
sudo apt install -y gcc make
次にSoftEtherのサイトから(betaではない)最新版をダウンロード。
SoftEther VPN (Freeware) > SoftEther VPN Server > Linux > Intel x64 / AMD64 (64bit)
で選択します。
wget https://jp.softether-download.com/files/softether/v4.42-9798-rtm-2023.06.30-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-x64-64bit.tar.gz
解凍
tar xzvf softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-x64-64bit.tar.gz
makeします
cd vpnserver
make
出来上がったものをコピー
cd ..
sudo mv vpnserver /usr/local/
パーミッションを変更
cd /usr/local/vpnserver/
sudo chmod 600 *
sudo chmod 700 vpncmd
sudo chmod 700 vpnserver
チェックツールがあるらしいので実行
./vpncmd
1,2,3のどれにするか聞かれるので3を選びます。
下のように出ればOKです。
VPN Tools has been launched. By inputting HELP, you can view a list of the commands that can be used.
あとはデーモン化して勝手に起動するようにします。
sudo vi /etc/systemd/system/vpnserver.service
以下をコピペ
[Unit]
Description = SoftEther VPN Server
After = network.target
[Service]
Type = forking
User = root
ExecStart = /usr/local/vpnserver/vpnserver start
ExecStop = /usr/local/vpnserver/vpnserver stop
Restart = on-failure
RestartSec = 3s
[Install]
WantedBy = multi-user.target
登録して起動
sudo systemctl daemon-reload
sudo systemctl enable vpnserver
sudo systemctl start vpnserver
これでコマンド操作は(ほぼ)終わりです。
ちなみにWebARENA Indigoの場合、初期状態だとVPSサービスのファイヤーウォールもOSのファイヤーウォールも無効になっているのでこのままだと素っ裸の状態です。
OSのほうはとりあえずほっておいて、VPSサービスのファイヤーウォールをある程度設定しておきます。
SoftEther環境設定
この後の設定は全部SoftEhter VPN Server ManagerというGUI管理ソフトでやります。Windows / Mac 版があるみたいです。
ポートはさっきのファイヤーウォール設定で閉じてないやつを選んでください(5555とか)。
とりあえず初期設定ウィザード始まりますが閉じてもらって大丈夫です。
各画面ごとの設定を書きます。
仮想HUBの管理
RTX用のユーザーをパスワード認証で作成する
屋外からPC/スマホとかでも繋ぎたいならそのアカウントも作っておく
※ScureNATは使いません
ローカルブリッジ設定
仮想ハブ(一個しか作ってないはず)に新しいtapデバイス(tap1)を作成して接続しておく
IPsec / L2TP / EtherIP / L2TPv3 設定
スマホやPCでL2TP/IPsecのVPNするならL2TPサーバーを有効にするにチェックを入れる
IPsec事前共有鍵の文字列をなんか入れておく
EtherIP / L2TPv3 over IPsec サーバー機能を有効にチェック
サーバー機能の詳細設定画面を開く(次へ)
EtherIP / L2TPv3サーバー機能の詳細設定
作成ボタンを押して各種設定を入れる
ISAKMP Phase 1 ID: なんかいれる
接続先の仮想HUB: 一個しか作ってないはずなのでそれを選ぶ
ユーザー名: 仮想HUBの管理で作ったRTX用のユーザー名
パスワード: 仮想HUBの管理で作ったRTX用のパスワード
OpenVPN / MS-SSTP 設定
使いたければチェック入れておく
これでGUIの設定OKです。
tapにアドレスを設定
やらなくてもいいですが、先ほど作成したtap_tap1にIPアドレスを割り当てておくと自宅からVPSにアクセスしやすくなります。
sudo vi /etc/netplan/99-tap_tap1.yaml
新しいファイルを作成。
割り当てるIPアドレスですが、自分の家で使ってるアドレスで被ってないやつを書いてください。我が家は192.168.0.0/24で使っているので下記のような感じにしました。
network:
version: 2
ethernets:
tap_tap1:
addresses:
- 192.168.0.254/24
ちゃんと反映されてるか確認。
netplan apply
ip addr
今回は固定しましたが、DHCPでIPもらってもいいと思います。
あとはRTXにConfigを流し込めば完了です。
RTXのConfigを設定
我が家ではLAN1に家の中のデバイス、LAN2に家の壁のLANコンセント(DHCP)をつなげています。
ip route default gateway dhcp lan2
bridge member bridge1 lan1 tunnel1
ip bridge1 address 192.168.0.1/24
lan flexible-port lan1=2-10 lan2=1
ip lan2 address dhcp
ip lan2 nat descriptor 1
tunnel select 1
tunnel encapsulation l2tpv3
tunnel endpoint name example.com fqdn
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 1 691200 rekey 90%
ipsec ike duration isakmp-sa 1 691200 rekey 90%
ipsec ike keepalive log 1 on
ipsec ike keepalive use 1 on dpd 10 6 0
ipsec ike local name 1 ISAKMP_Phase_1_ID fqdn
ipsec ike nat-traversal 1 on keepalive=30 force=off
ipsec ike pre-shared-key 1 text IPSec_PSK
ipsec ike remote address 1 example.com
ipsec ike restrict-dangling-sa 1 off
l2tp always-on on
l2tp tunnel disconnect time off
l2tp keepalive use on 5 10
l2tp keepalive log on
l2tp syslog on
l2tp remote end-id vpn
tunnel enable 1
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
ipsec auto refresh on
ipsec transport 1 101 udp 1701
telnetd host bridge1
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.2-192.168.0.99/24
dns server dhcp lan2
l2tp service on l2tpv3
httpd host bridge1
statistics traffic on
注意点を書いていきます。
lan flexible-port lan1=2-10 lan2=1
RTX1300はフレキシブルLANが使えるので書いてますが、機能を持ってない機種では書かないようにしてください。
ip bridge1 address 192.168.0.1/24
dhcp scope 1 192.168.0.2-192.168.0.99/24
我が家では192.168.0.0/24環境で使っていますが、必要に応じて変更してください。
// ドメインで書く場合
tunnel endpoint name example.com fqdn
ipsec ike remote address 1 example.com
// IPアドレスで書く場合
tunnel endpoint address 100.100.100.100
ipsec ike remote address 1 100.100.100.100
ドメインを持っているのでFQDNで設定しました、IPアドレスで書くこともできます。
ipsec ike local name 1 ISAKMP_Phase_1_ID fqdn
ISAKMP_Phase_1_IDは先ほど「EtherIP / L2TPv3サーバー機能の詳細設定」画面で設定したもの。
ipsec ike pre-shared-key 1 text IPSec_PSK
IPSec_PSKは「IPsec / L2TP / EtherIP / L2TPv3 設定」画面で設定したもの。
telnetd host bridge1
httpd host bridge1
ブリッジを作るとlan1やtunnel1という概念が消滅してそれらが合わさったbridge1に変わるので、RTX1300なんかの新しい機種の初期設定ではWEB GUIにアクセスできなくなります。(昔の機種でもhttpd host lan1とか書いているとアクセスできなくなりますので注意)
あと初期化直後や普段使ってるときはこういう設定が入ってると思います。
ip lan1 address 192.168.100.1/24
このip lan1 addressの設定は必ず消してください。この設定と
ip bridge1 address 192.168.100.1/24
上のように同じIPアドレスであったり、同じ範囲内の別のIPアドレス(たとえば192.168.100.254/24とか)が記載されていると挙動がバグります。
範囲を別にすれば書けますが、そもそもlan1のアドレスを書く意味が(普通は)無いのでトラブル防止のため消してください。
設定流し込めば全部完了です。
運用上の注意点
この運用で最大の注意点はVPS-自宅間のtunnelが正常に繋がっていないと他の端末をVPN接続できません。
というのもVPNでつないだデバイスにIPアドレスを振るためのDHCPサーバーは自宅のRTXが担っているので、そこが繋がっていないとIPが振られずに接続エラーになります。
あとは普通はOpenVPNでつなぐと(SecureNat環境で)、LAN内のアクセスのみVPN経由になりそれ以外はVPNを通さず直接アクセスするようになりますが、この運用では自宅のDHCPでアドレスが振られるため強制的にデフォルトゲートウェイが自宅のルーターになり、全通信がVPS→自宅経由になります。
そのため普段の通信もクソ遅くなってしまいますが、OpenVPNなら下記のように.ovpnに書いておけば回避できます。
route-nopull
route 192.168.0.0 255.255.255.0
オチ
とまぁここまでいろいろやってきたんですが、WebARENA Indigoのネットワークがとんでもなく遅いので使うのやめました。
共用100Mbpsですが、実測で20Mbps出てればいいほうで安定感もなく10Mbps以下になることもざらです。
別のVPSも考えたんですが、Cloudflare Zero Trustで同じようなことができて、しかも無料で、しかも速度が100Mbps以上安定するのでもはや下手なVPSよりこっちのほうがええやんとなりました。
こっちの記事はまた気が向いたら書くかもしれません。
P.S.
Cloudflare Zero Trustの記事書きました。