あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

i-revoがサービス終了するので自宅サーバーをASAHIネットの固定IPに切り替えた

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は別途接続すれば、両方をいい感じに併用できるらしいです。

asahi-net.jp

で、諸々設定してIPoE接続に切り替え完了。ルーターの画面を開くと、v6コネクトの設定が配信されてきて無事IPoE接続できるようになりました。なんだろう、ブロックとかいう単位での管理から漂う初代プレイステーションメモリーカード感(爺並感)。

さて問題が。IPoE接続に切り替えると、HGW(うちはRT-500MI)ではPPPoE接続ができなくなるそうで、これではIPoE接続とPPPoE接続を使い分けるプランが実現できません。なんてこった。

Ubuntu Server 20.04でルーターをやる

PPPoE接続は自宅サーバーを収容しているESXiの中でVMを立ててやれば別に問題なさそうなので、そうすることにしました。VPNサーバーのVMが似たような役割なので、ここにまとめてしまうことにしました。環境はUbuntu Server 20.04です。

参考にしたのはこちらのブログ記事です。だいぶ助かりました。。

rohhie.net

$ 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から延々アクセスが来続けていることに気づいてしまい、大声が出ました……。何だったんだアレは。