賃貸無料ネット民でもグローバル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の記事書きました。

いいなと思ったら応援しよう!