インターリンクのマイIPサービスでCentOS8マシンに固定IPアドレスを割り当てる

インターリンクのマイ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サービスを使おうという人がいたら、上に書いた方法でうまくいったということを参考にしてもらおう。

NURO光が開通した

昨日のことなんだけど、時間がとれなかったので今日書く。

回線の工事をやってもらって、NURO光が開通した。工事は宅内工事と屋外工事が必要なんだけど、1日でやってもらった(追加工事費がかかる)。宅内工事は午前中に、屋外工事は午後4時ころには終わった。

で、設置された ONU というルータみたいな機器に、apostrophe と rollo の2台を有線で繋いで試してみた。結果、2台のコンピュータ同士も通信できるし、もちろんインターネットにも接続できる。まずは大丈夫のようだ。この記事もNURO光で接続して書いてる。

ネットワークアドレスを変更

デフォルトではネットワークアドレスが 192.168.1.0/24 になってるんだけど、これでは既存のネットワークとかぶるので、192.168.2.0/24 に変更する。

ONU は web 画面で設定できるようになっているので、http://192.168.1.1 にブラウザでアクセスしてログイン。ONU 自身のアドレスを始め、DHCP で割り当てるアドレスの範囲、デフォルトゲートウェイなどを 192.168.2.0/24 になるように変更した。これで電源を入れなおせばひとまずは完了。

あとは、web サーバをインターネットに公開するために、固定IPアドレスの設定なんかをやってたんだけどなかなかうまくいかずに昨日は時間切れ。というわけで今日書いてる次第。これについては記事を分ける。