kaillera Serverの使用ポートについて
20140110

調査環境
 IOS12.4(6)T
 CentOS7.x
 CentOS6.x
 CentOS5.x
 kaillerasrv0.92
◆調査理由
 Linux版はWindows版とは違うポートを使用するのは周知の事実ではありますが、
  使用ポートについての情報が少ない為調査を実施します。

 サーバーの立て方については以下参照
 →LinuxでkailleraServer

◆調査方法について
 UDPポート1000-6000,32700-65535をアクセス許可した状態での運用ログを元に調査。
 →TCP/UDP27888については、使用理由が明確な為除外します。

 下限値を調査する為、ルータ側にてUDP30000-32700への接続ログを調査。

◆ログについて
 kaillera Server(以下、kaillerasrv)のログに有る「Negotiating login: HELLOD00D○○○○○○」部分に注目します。
 →ルーターの接続ログと上記ログを照らし合わせることにより、上記ログ「○」部分がUDPポートと同一である事が分かります。

◆調査結果
 以上の内容を当サーバーログ約半年分を元に調査した結果、以下の事が判明しました。

  使用された最低ポート 32768
  使用された最大ポート 60991

 最大ポートについては、「65535」までのアクセス許可設定であるにもかかわらず、
  半年間一度も「60991」を超えていない事から、「61000」を上限値と断定。
 最低ポートについては、ルーター側ログにて30000-32700間で該当すると思われるログは見当たらず、
  kaillerasrvログから「32700」が下限値と断定。

◆UDP1000-6000について
 ここで一つ疑問が生まれます。「UDP1000-6000ポートはいつ使用されている?」
 kaillerasrvログからは確認出来ない事から、ルータにてログを取得するよう設定して調査を実施。

◆調査結果
 約1週間分のログを精査したところ、ルーターにてpermitされたIPアドレスと
  kaillerasrvに接続しているIPアドレスで一致する物が見当たりませんでした。(ゲーム開始時に使用されると推測していた為)

 結果、UDP1000-6000は使用されていないと断定

◆以上を踏まえ、Linux版kaillerasrvに必要なポートをまとめてみましょう。
 TCP
  27888
 UDP
  27888
  32700-61000(訂正理由は最下部にて)
  32768-61000(デフォルト設定の場合)

◆Windows版kaillerasrvは以下
 TCP
  27888
 UDP
  1000-6000

◆最後に
 全て書き終えてから調べて判明した事ですが、Linuxは「/proc/sys/net/ipv4/ip_local_port_range」
  にて自由利用が可能なポートを指定しているそうです。

 当サーバー設定を確認したところ、「32768 61000」となっており、調査結果とほぼ一致。
  →セキュリティの観点から、kaillerasrvの使用ポートを少なくしたい場合はこの値を変更する事で可能
  →設定方法は下記参照

〜設定方法〜
まずは現在の設定値を確認しておきましょう。
 [root@server ~]# cat /proc/sys/net/ipv4/ip_local_port_range
 32768 61000

試しに自由使用ポート「49152-65535」辺りに変更してみましょう。
 [root@server ~]# echo "49152 65535" > /proc/sys/net/ipv4/ip_local_port_range

設定の確認
 [root@server ~]# cat /proc/sys/net/ipv4/ip_local_port_range
 49152 65535

再起動時にデフォルト設定に戻ってしまう為、デフォルトの値を変更する。
 [root@server ~]# echo "net.ipv4.ip_local_port_range = 49152 65535" >> /etc/sysctl.conf

ネットワークのリスタートorシステムの再起動で反映
 [root@server ~]# /etc/rc.d/init.d/network restart
or
 [root@server ~]# reboot

※システムでの使用ポートを制限している点に注意して値を設定して下さい。

以上