雑記帳

ネットワーク運用

CentOS で PPTP-VPN サーバーを稼働させていたのですけど、久しぶりに接続しようとしたところ、サーバーが応答してくれませんでした。

解決策は調査中ですが、原因は OS のアップデートの様子です。

L2TP-VPN サーバーが CentOS をアップデート後に接続できなくなりました

CentOS 6.5 をPPTP-VPN サーバーとして使っていたのですが、iPhone からサーバーへ久しぶりにVPN 接続しようとしたところ、サーバーが応答してくれませんでした。

考えられる原因として、ひとつは最近リリースされた iOS 8.0 の都合もあるのかなとも思ったのですが、これについてはこれまで利用できていた iOS 6.0 の機種でもダメになっていたので直接関係はなさそうです。

もうひとつの心当たりは に実施したCentOS のアップデートです。そもそもしばらくVPN を利用していなかったので、もしかするとそれより前から調子が悪かったかもわかりませんけど、ひとまず大きな心当たりだったので、まずはそこから確認してみることにしました。

原因はiproute かopenswan のアップデート

今回は幸いCentOS をyum でアップデートする直前にシステムのスナップショットを取ってあったので、まずはその時点にまで戻してみました。そうしたところ、問題なく iPhone からL2TP で接続できるようになりました。

それでは何が邪魔をしているかをひとつひとつアップデートしながら調べてみると、iproute 2.6.32-32.el6_5.x86_64 かopenswan 2.6.32-27.4.el6_5.x86_64 のどちらかをアップデートしたタイミングでVPN 接続できなくなることが分かりました。これらをアップデートしても、openswan やxl2tpd といったPPTP-VPN に必要なサービスは起動するようでしたが、サーバーが応答しない様子です。

ちなみにiproute というのはipcfg コマンドなどのIP 設定周りに関係する基本コマンドのパッケージに、openswan はL2TP トンネリング上で暗号化を実現するためのIPSec を実現するパッケージになるようです。

今回はL2TP-VPN を構築するのにxl2tpd を使用していたのですけど、こちらだけならxl2tpd-1.3.6-1.el6.x86_64 にアップデートしても問題なく接続できました。

解決方法は調査中

どちらのパッケージもPPTP-VPN を構成する上で関係するものですし、これらの中の何かが問題を引き起こしていることはほぼ間違いのですけど、今のところはこれ以上のことは分かっていません。

とりあえず、これらのパッケージで更新されるファイルの内容を確認すると次のようにはなっていました。長くなるので/usr/share/ に配置されるドキュメント系のファイルは省いてあります。

iproute 2.6.32-32.el6_5.x86_64

/etc/iproute2
/etc/iproute2/ematch_map
/etc/iproute2/rt_dsfield
/etc/iproute2/rt_protos
/etc/iproute2/rt_realms
/etc/iproute2/rt_scopes
/etc/iproute2/rt_tables
/etc/sysconfig/cbq
/etc/sysconfig/cbq/avpkt
/etc/sysconfig/cbq/cbq-0000.example
/sbin/bridge
/sbin/cbq
/sbin/ifcfg
/sbin/ip
/sbin/rtmon
/sbin/tc
/usr/lib64/tc
/usr/lib64/tc/m_xt.so
/usr/sbin/arpd
/usr/sbin/lnstat
/usr/sbin/nstat
/usr/sbin/rtacct
/usr/sbin/ss

openswan 2.6.32-27.4.el6_5.x86_64

/etc/ipsec.conf
/etc/ipsec.d
/etc/ipsec.d/policies
/etc/ipsec.d/policies/block
/etc/ipsec.d/policies/clear
/etc/ipsec.d/policies/clear-or-private
/etc/ipsec.d/policies/private
/etc/ipsec.d/policies/private-or-clear
/etc/ipsec.secrets
/etc/prelink.conf.d
/etc/prelink.conf.d/openswan-fips.conf
/etc/rc.d/init.d/ipsec
/usr/libexec/ipsec
/usr/libexec/ipsec/._copyright.hmac
/usr/libexec/ipsec/._include.hmac
/usr/libexec/ipsec/._keycensor.hmac
/usr/libexec/ipsec/._pluto_adns.hmac
/usr/libexec/ipsec/._plutoload.hmac
/usr/libexec/ipsec/._plutorun.hmac
/usr/libexec/ipsec/._realsetup.hmac
/usr/libexec/ipsec/._secretcensor.hmac
/usr/libexec/ipsec/._startklips.hmac
/usr/libexec/ipsec/._startnetkey.hmac
/usr/libexec/ipsec/._updown.hmac
/usr/libexec/ipsec/._updown.klips.hmac
/usr/libexec/ipsec/._updown.mast.hmac
/usr/libexec/ipsec/._updown.netkey.hmac
/usr/libexec/ipsec/.addconn.hmac
/usr/libexec/ipsec/.auto.hmac
/usr/libexec/ipsec/.barf.hmac
/usr/libexec/ipsec/.eroute.hmac
/usr/libexec/ipsec/.ikeping.hmac
/usr/libexec/ipsec/.klipsdebug.hmac
/usr/libexec/ipsec/.look.hmac
/usr/libexec/ipsec/.newhostkey.hmac
/usr/libexec/ipsec/.pf_key.hmac
/usr/libexec/ipsec/.pluto.hmac
/usr/libexec/ipsec/.ranbits.hmac
/usr/libexec/ipsec/.rsasigkey.hmac
/usr/libexec/ipsec/.secrets.hmac
/usr/libexec/ipsec/.setup.hmac
/usr/libexec/ipsec/.showdefaults.hmac
/usr/libexec/ipsec/.showhostkey.hmac
/usr/libexec/ipsec/.showpolicy.hmac
/usr/libexec/ipsec/.spi.hmac
/usr/libexec/ipsec/.spigrp.hmac
/usr/libexec/ipsec/.tncfg.hmac
/usr/libexec/ipsec/.verify.hmac
/usr/libexec/ipsec/.whack.hmac
/usr/libexec/ipsec/_copyright
/usr/libexec/ipsec/_include
/usr/libexec/ipsec/_keycensor
/usr/libexec/ipsec/_pluto_adns
/usr/libexec/ipsec/_plutoload
/usr/libexec/ipsec/_plutorun
/usr/libexec/ipsec/_realsetup
/usr/libexec/ipsec/_secretcensor
/usr/libexec/ipsec/_startklips
/usr/libexec/ipsec/_startnetkey
/usr/libexec/ipsec/_updown
/usr/libexec/ipsec/_updown.klips
/usr/libexec/ipsec/_updown.mast
/usr/libexec/ipsec/_updown.netkey
/usr/libexec/ipsec/addconn
/usr/libexec/ipsec/auto
/usr/libexec/ipsec/barf
/usr/libexec/ipsec/eroute
/usr/libexec/ipsec/ikeping
/usr/libexec/ipsec/klipsdebug
/usr/libexec/ipsec/look
/usr/libexec/ipsec/newhostkey
/usr/libexec/ipsec/pf_key
/usr/libexec/ipsec/pluto
/usr/libexec/ipsec/ranbits
/usr/libexec/ipsec/rsasigkey
/usr/libexec/ipsec/secrets
/usr/libexec/ipsec/setup
/usr/libexec/ipsec/showdefaults
/usr/libexec/ipsec/showhostkey
/usr/libexec/ipsec/showpolicy
/usr/libexec/ipsec/spi
/usr/libexec/ipsec/spigrp
/usr/libexec/ipsec/tncfg
/usr/libexec/ipsec/verify
/usr/libexec/ipsec/whack
/usr/sbin/.ipsec.hmac
/usr/sbin/ipsec
/var/run/pluto

これらのパッケージの間で何か共通するファイルはなさそうですね。これらのパッケージが依存して自動更新されることもないようですので、ここで様子を見ながら調べて行く必要がありそうです。

今はちょっと時間がないのと、このVPN が使えなくてもそれほど困らないので、ひとまずいったんここまでにして、機会を見つけて調べてみたいと思います。