インターリンクのマイIPサービス
NURO光は固定IPアドレスを割り当てるサービスを提供していないので、インターリンク社のマイIPというサービスを使って固定IPアドレスを割り当てる。
cf. INTERLINK
上のページから、マイIPサービスに申し込んだ。申し込み自体は何も難しくはない。クレジット払いにしたのですぐに利用できるようになる。
問題はここから。マイIPサービスは、VPN を使って PC とインターリンクのサーバを繋ぎ、PC の ppp0 インターフェイスに固定IPアドレスを割り当てるようになっている(ようだ)。そのためには PPTP クライアントの設定が必要なんだけど、これでハマった。
環境
まずは環境を整理しておこう。
- OS: CentOS 8.0
- マイIPに必要な情報は取得済み
設定作業(1)
インターリンクの公開しているマニュアルに沿って作業する。
cf. https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?id=501
マイIP接続ツールをダウンロードして /etc 以下に展開。
[takatoh@rollo ~]$ curl -O https://www.interlink.or.jp/support/vpn/myip/myiptools/myiptools.tar.gz
[takatoh@rollo ~]$ sudo tar xvzf myiptools.tar.gz -C /etc
設定ファイル /etc/myip/myip.conf を自分の接続情報に合わせて編集。
[takatoh@rollo ~]$ sudo vim /etc/myip/myip.conf
初期設定スクリプトを実行。
[takatoh@rollo ~]$ sudo /etc/myip/myip-setup
ここでエラーが起きた。メッセージを抜粋する。
一致した引数がありません: pptp-setup エラー: 一致するものが見つかりません /etc/myip/myip-setup: 行 111: pptpsetup: コマンドが見つかりません /etc/myip/myip-setup: 行 117: /etc/ppp/peers/myip_miXXXXXX: そのようなファイルやディレクトリはありません
myip_miXXXXXX っていうファイルは自分用の設定ファイル(実際には miXXXXXX の部分に自分のログインIDが入る)。
初期設定スクリプト myip-setup の中を覗いてみて分かったのは、pptp-setup っていうパッケージをインストールしようとしているけどそれが失敗しているということと、そのせいか pptpsetup コマンドが見つからないようだ、ってことだ。
じゃあ、手動で pptp-setup パッケージをインストールしてやればいいかというと、そんなパッケージは無いらしい。
[takatoh@rollo ~]$ dnf search pptp-setup 一致する項目はありませんでした。
というところまでが昨日の話。
設定作業(2)
今日になっていろいろググってみたところ、PPTP Client の公式サイトを見つけた。
cf. http://pptpclient.sourceforge.net/
このページの Download セクションには、pptp には pptpsetup が含まれている、と書いてある。
pptp, the helper program used by pppd to make a tunnel, which also includes pptpsetup,
なら、ここからダウンロードして pptpsetup をコピーしてやったらいいんじゃないか。というわけで早速ダウンローとして展開。するとたしかに含まれていた。
[takatoh@rollo ~]$ wget https://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.10.0/pptp-1.10.0.tar.gz
[takatoh@rollo ~]$ tar xzvf pptp-1.10.0.tar.gz
[takatoh@rollo ~]$ ls pptp-1.10.0 AUTHORS dirutil.c pptp_compat.h routing.c COPYING dirutil.h pptp_ctrl.c routing.h ChangeLog options.pptp pptp_ctrl.h test-redirections.c DEVELOPERS orckit_quirks.c pptp_gre.c test-redirections.h Documentation orckit_quirks.h pptp_gre.h util.c INSTALL ppp_fcs.c pptp_msg.h util.h Makefile ppp_fcs.h pptp_options.h vector.c NEWS pptp.8 pptp_quirks.c vector.h PROTOCOL-SECURITY pptp.c pptp_quirks.h vector_test.c README pptp_callmgr.c pptpsetup version.c TODO pptp_callmgr.h pqueue.c version.h USING pptp_compat.c pqueue.h
この pptpsetup、中を覗いてみると Perl のスクリプトのようだ。/usr/sbin にコピーして実行権限をつけてやる。
[takatoh@rollo ~]$ sudo cp pptp-1.10.0/pptpsetup /usr/sbin
[takatoh@rollo ~]$ sudo chmod 755 /usr/sbin/pptpsetup
さあ、これでどうだろう。初期設定スクリプトを実行。
[takatoh@rollo ~]$ sudo /etc/myip/myip-setup CentOS-8 - AppStream 2.0 kB/s | 4.3 kB 00:02 CentOS-8 - Base 3.2 kB/s | 3.9 kB 00:01 CentOS-8 - Extras 673 B/s | 1.5 kB 00:02 Package gawk-4.2.1-1.el8.x86_64 is already installed. Package sed-4.5-1.el8.x86_64 is already installed. 依存関係が解決しました。 行うべきことはありません。 完了しました! /sbin/pptpsetup: can't write to '/etc/ppp/peers/myip_miXXXXXX': No such file or directory /etc/myip/myip-setup: 行 117: /etc/ppp/peers/myip_miXXXXXX: そのようなファイルやディレクトリはありません done.
pptpsetup コマンドは実行できたようだけど、ファイルが書き込めないといっている。調べてみると /etc/ppp/peers ディレクトリが無いようなので作ってやる。
[takatoh@rollo ~]$ sudo mkdir /etc/ppp/peers
こんどはどうだ。
[takatoh@rollo ~]$ sudo /etc/myip/myip-setup メタデータの期限切れの最終確認: 0:01:04 時間前の 2019年12月15日 10時20分25秒 に実施しました。 Package gawk-4.2.1-1.el8.x86_64 is already installed. Package sed-4.5-1.el8.x86_64 is already installed. 依存関係が解決しました。 行うべきことはありません。 完了しました! done.
エラーなし。うまくいったようだ。これでやっと次にすすめる。
設定作業(3)
マニュアルによると:
PPTP接続に必要なTCPポート1723およびGREプロトコルを通過できるようにしておく必要があります。
と書いてあるけど、やり方が書いてない。ポートの開け方はわかる。
[takatoh@rollo ~]$ sudo firewall-cmd --zone=public --add-port=1723/tcp --permanent
GREプロトコルの方はググったら↓のページを見つけた。
cf. https://www.vultr.com/docs/how-to-establish-a-gre-tunnel-between-two-centos-7-servers
cf. https://github.com/firewalld/firewalld/issues/30
ip_gre モジュールをロードする。
[takatoh@rollo ~]$ modprobe ip_gre
GRE プロトコルを通過させるのは firewall-cmd でできるようだ。
[takatoh@rollo ~]$ sudo firewall-cmd --zone=public --add-rich-rule='rule protocol value="47" accept' --permanent
さあ、これで準備は整ったはずだ。
接続開始
myip-up コマンドで接続を開始する。
[takatoh@rollo ~]$ sudo /etc/myip/myip-up Using interface ppp0 Connect: ppp0 <--> /dev/pts/1 CHAP authentication succeeded MPPE 128-bit stateless compression enabled local IP address 202.241.129.128 remote IP address 202.241.128.1 private IP mode. done.
ifconfig コマンドの出力(下はその抜粋)をみると、ppp0 インターフェイスに固定IPアドレスが割り振られているのがわかる。
ppp0: flags=4305 mtu 1346 inet 202.241.129.128 netmask 255.255.255.255 destination 202.241.128.1 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 7 bytes 100 (100.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7 bytes 134 (134.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ちなみに、接続を終了するには /etc/myip/myip-down コマンドを実行する。
確認
別のネットワークに繋がってる Windows マシンから、http://202.241.129.128/hello.html にアクセスしたところ、ちゃんと「Hello, this is rollo.」と表示されるのを確認した(rollo ってのは VPN 接続したホストの名前)。
これにて無事完了。
[追記 12/16]
一昨日(12/14)、スクリプトがエラーになって先に進めなくなったところで、インターリンク社に問い合わせをしたんだけど、今日になってその回答が来た。曰く:
大変申し訳ございませんが、マイIPはCentOS 8.0に対応しておりません。
……まぁ、予想はしてたけどね。リリースされたばっかりのディストリビューションだしね。
それに、パッケージが無かったりすりのはディストリビューションの方の問題であって、インターリンク社が悪いわけではない。
ともかく、CentOS 8.0 でマイIPサービスを使おうという人がいたら、上に書いた方法でうまくいったということを参考にしてもらおう。