NATを通過してオンラインゲームをやる方法


参考文献:FreeBSD PRESS 2002/9月号
マイクロソフトのオンラインゲームをするには、ポートの転送が必要になってくるので、その為の設定を簡単にまとめてみました。

ゲームをやるための設定は、以下の設定が必要になります。 ダンジョンシージーを例にしています。使用するポートは以下のポートです。
80(TCP)
チャット、ゲーム、リスト、ニュース関係で使用する
2300(UDP)
ZoneMatchで使用する
6073(UDP)
プライマリ:ホストセカンド用インバウンド、参加者用インバウンド
2302-2400(UDP)
セカンダリ:インバウンド
2302-2400(UDP)
セカンダリ:アウトバウンド
TCP80番のポートは、既にあいている(設定されている)と思います。このポートが開いていないと、インターネットのWEBページが観覧できないですからね・・・。
ZoneMatchに接続できない人は、UDPの2300番のポートが開いていないと思います。
自分でホストになって、参加者が参加できない現象の人は、UDPの6073が開いていないと思いますね・・・。

設定
まず、NATの設定からです。
適当な場所に、natd.confと言うファイルを作成しました。
以下、natd.confの設定
dynamic yes
same_ports yes

#↓ポートの転送(ダンジョンシージーの例)
redirect_port udp 192.168.0.7:2300 2300
redirect_port udp 192.168.0.7:6073 6073
redirect_port udp 192.168.0.7:2302-2400 2302-2400
 
IPアドレスは、windows(クライアント)マシンのIPアドレスです。
正確に入力してください。DHCPを使用してIPアドレスを自動で振っている場合は、難しいかもですね。

rc.confにするNATDの設定
natd_enable="YES"
natd_interface="tun0"
natd_flags="-f /etc/firewall/natd.conf"
 

パケットフィルタリングでファイアーウオールをしていなければ、これでゲームが出来るようになります。
次にパケットフィルタリング(IPFW)の設定をします。
ゲームの為にファイアーウオール解除したくないですからね・・・。
以下のようにしてみました。
#microsoftのゲームで使用するport(ダンジョンシージーの例)

    $fwcmd add allow tcp from any to any 80 setup #このポートは元々設定してあると思いますが

    #以下のUDPポートを開けてやります
    $fwcmd add pass udp from any 2300 to any
    $fwcmd add pass udp from any to any 2300
    $fwcmd add pass udp from any 6073 to any
    $fwcmd add pass udp from any to any 6073
    $fwcmd add pass udp from any 2302-2400 to any
    $fwcmd add pass udp from any to any 2302-2400
 

もっとスマートな設定方法があるかもしれませんね・・・。

BACK