OpenVPNの使用ポートをデフォルトから変更して起動しようとすると失敗。
なんで?と思ってOpenVPNのログを見ると
TCP/UDP: Socket bind failed on local address [undef]: Permission denied
なんかパーミッションエラー・・・
Socket bindでパーミッション・・・? と考えること数分。
SELinuxが有効のままということに気付いた。
オーソドックスに「SELinuxを無効」–> 「OpenVPN起動」 –> \(^o^)/ ・・・
これじゃぁおもしろくない。
よりセキュリティを高く運用するためには、SELinuxが有効のままのほうがいい。
というわけで、まずはSELinuxのポリシーで許可されているポートを検索。
# semanage port -l | grep openvpn
bash: semanage: コマンドが見つかりません
・・・orz・・・
CentOS 6からはSELinux用のコマンドラインツールであるsemanageは別途インストールが必要。
では必要なパッケージを探す。
# yum provides /usr/sbin/semanage
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
policycoreutils-python-2.0.83-19.24.el6.x86_64 : SELinux policy core python utilities
Repo : base
Matched from:
Filename : /usr/sbin/semanage
policycoreutils-python-2.0.83-19.24.el6.x86_64 : SELinux policy core python utilities
Repo : installed
Matched from:
Other : Provides-match: /usr/sbin/semanage
こんな感じで出てくるので、「policycoreutils-python」が必要ということがわかる。
で、さくっとインストール。
# yum -y install policycoreutils-python
インストールできたら、再度挑戦!
# semanage port -l | grep openvpn
openvpn_port_t tcp 1194
openvpn_port_t udp 1194
やっぱり制限されてましたね。
で、ポートを追加したい場合は以下のような感じでコマンドを実行。
# semanage port -a -t openvpn_port_t -p udp 11194
(少し時間がかかりますが、焦らず待ちましょう・・・)
再度SELinuxのポリシーで許可されているポートを検索。
# semanage port -l | grep openvpn
openvpn_port_t tcp 1194
openvpn_port_t udp 11194, 1194
この例の場合、udp 11194 が追加されているのがわかるはず。
最後にOpenVPNを再起動して、正常に起動することを確認。