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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください