i-revoが今月末でサービス終了します。自宅サーバーに使ってるi-revo回線を、メインのASAHIネット回線に固定IPオプションを付けつつ、普段の通信はIPoEに移行する話。
訃報
アナウンスが2月の下旬にあって、オゲーーー!!!となった次第。
突然ではございますが、この度、i-revo アクセスにて提供しておりました以下のサービスにつきまして、2022年5月31日 23時59分59秒をもちましてサービス終了とさせていただきます事、ご案内申し上げます。
提供終了サービス
550円インターネット
あんしんインターネット
サービス終了日時 2022年5月31日 23時59分59秒
550円で固定IPが使えるのは非常に重宝しており、けっこう長い間自宅サーバー用に活用してきました。いままでお世話になりました。
続きをどうするか
上京以来ずっと使ってきている、ASAHIネットの固定IPオプションを契約することにしました。こちらは月880円。330円増ですがまあ良いでしょう。
しかし、このままでは普段の通信も自宅サーバーの通信もすべて固定IPでの通信になります。なんとなくできれば分けたいです。すると、どうもASAHIネットではいつの間にかIPoEに対応していて、こちらに切り替えつつ固定IPのPPPoEは別途接続すれば、両方をいい感じに併用できるらしいです。
で、諸々設定してIPoE接続に切り替え完了。ルーターの画面を開くと、v6コネクトの設定が配信されてきて無事IPoE接続できるようになりました。なんだろう、ブロックとかいう単位での管理から漂う初代プレイステーションのメモリーカード感(爺並感)。
さて問題が。IPoE接続に切り替えると、HGW(うちはRT-500MI)ではPPPoE接続ができなくなるそうで、これではIPoE接続とPPPoE接続を使い分けるプランが実現できません。なんてこった。
Ubuntu Server 20.04でルーターをやる
PPPoE接続は自宅サーバーを収容しているESXiの中でVMを立ててやれば別に問題なさそうなので、そうすることにしました。VPNサーバーのVMが似たような役割なので、ここにまとめてしまうことにしました。環境はUbuntu Server 20.04です。
参考にしたのはこちらのブログ記事です。だいぶ助かりました。。
$ sudo apt install ppp pppoe
設定はpppconfigでとか言う話もググルと出ましたが、結局は設定ファイルを直接書いたほうが早かった気がします。PPPoEようには一応別インターフェースを付けましたがそれはしなくても良かった気もします。どうせVMなのでつけ放題。
$ sudo vi /etc/ppp/peers/asahinet plugin rp-pppoe.so ens224←ここは使用するインターフェース。 user "<ユーザー名。引用符はいる>" noipdefault usepeerdns defaultroute hide-password noauth persist mtu 1454
あとはPPPoEの認証。chap-secretsだけ書けば良さそう?ですが、一応pap-secretsも書きました。ここもIDとパスワードは引用符で囲みます。
$ sudo vi /etc/ppp/pap-secrets "<ID>" * "<パスワード>" $ sudo vi /etc/ppp/chap-secrets (pap-secretsと同じのを書いておく。)
有効化はsystemdで。
$ sudo systemctl enable ppp@asahinet $ sudo systemctl start ppp@asahinet
するとppp0が生えてきます。
4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1454 qdisc fq_codel state UNKNOWN group default qlen 3 link/ppp inet 110.4.223.100 peer 202.224.43.118/32 scope global ppp0 valid_lft forever preferred_lft forever
あとはルーターとしてsysctlとかufwとかの設定をやります。
sysctlとufwのデフォルトポリシー設定。これはVPNサーバーを作った時点で有効化してありましたが一応。
$ sudo vi /etc/sysctl.conf net.ipv4.ip_forward=1 $ sudo sysctl -p $ sudo vi /etc/default/ufw DEFAULT_FORWARD_POLICY="ACCEPT"
ufwのbefore.rulesの冒頭にIPマスカレードのルールを入れていきます。POSTROUTINGの設定は/24でルールを入れても良いですが、今回は公開するサーバーだけ投入することにしました。
$ sudo vi /etc/ufw/before.rules *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -F # OpenVPN/WireGuard -A POSTROUTING -s 192.168.39.0/24 -o ens192 -j MASQUERADE # Web server -A POSTROUTING -s <WebサーバーIP>/32 -o ppp0 -j MASQUERADE -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination <WebサーバーIP> -A PREROUTING -i ppp0 -p tcp --dport 443 -j DNAT --to-destination <WebサーバーIP> # Minecraft -A POSTROUTING -s <マイクラサーバーIP>/32 -o ppp0 -j MASQUERADE -A PREROUTING -i ppp0 -p tcp --dport 25565 -j DNAT --to-destination <マイクラサーバーIP> COMMIT
転送不許可まわりは、参考記事ではinがありましたが、どのインターフェースも出ていくべからずとしました。
$ sudo ufw route deny out on ppp0 to 0.0.0.0/0 port 135,137:139,445 proto tcp $ sudo ufw route deny out on ppp0 to 0.0.0.0/0 port 135,137:139,445 proto udp $ sudo ufw route allow out on ppp0 to 0.0.0.0/0
ufwの通常のルールさらし。SSHとZabbix Agentは内側からのみ接続許可。VPNサービスはどこからでも許可といった具合。ところで、WireGuardがだいぶ簡単なので、OpenVPNは片付けても良いかもと思っているところ。WireGuardの難点はMac版クライアントで設定がたまに突然全消しされることですが……あれ直らんのかしらね。
To Action From -- ------ ---- 22/tcp ALLOW 192.168.29.0/24 10050/tcp ALLOW 192.168.29.0/24 51820/udp ALLOW Anywhere 1194/udp ALLOW Anywhere
あとは各サーバーのデフォルトゲートウェイをルーターVMに振り替えれば完成です(ここに書き漏らした設定項目がなければですが!)。なんとかなった。
まとめ
HGWでIPoEとPPPoEが同時利用できないのはなかなかだるいですね。あとから増えた機能だからどうしようもないのかもですけど。というわけでLinuxでゴリ押ししました。
Ubuntu Serverは4月に22.04が登場し、パケットフィルタリングのバックエンドのデフォルトがnftablesになったので、こちらへの移行もさっそくやらないといけなさそうです。。
さいごに改めて、i-revoさん今までありがとうございました。
ところで、i-revo回線で今回の検証していたら、SSHポートとして使っていた適当なポート番号に、イギリスの特定IPから延々アクセスが来続けていることに気づいてしまい、大声が出ました……。何だったんだアレは。