img_5108

コンピュータのネットワークで、接続先のポート番号を気にすることは多いのですが、接続元(自分)のポート番号はあまり気にしたことがありませんでした。…とある環境で、接続元のポート番号でフィルタリングしているケースがあって、接続元ポート番号の範囲を決めるにはどうやるのか調べてみましたので、備忘録代わりに書いておきます。
※今回は接続元の使用するポート番号が50,000番台を使うという事にします。

 YAMAHA RTX1100 の場合

FW の内側にあってローカルIPアドレスを持っている機器の場合、アウトバウンド(外向き)で対象のサーバ等に接続する場合、FW やルータ等で IPマスカレード ( NAPT:Network Address and Port Translation ) を使うことが多いと思います。
この場合にはその FW やルータで使用するポート番号を規定する必要があります。
ちょっと古いですが、YAMAHA の RTX1100 では以下のように設定します。

nat descriptor type 1 masquerade
nat descriptor masquerade port range 1 55904 4095

RTX1100 では同時に使えるセッション数が4,095なので、このように設定すると55,904~59,999迄のポート番号を使うようになります。
※YAMAHAルータの場合、設定した Range(範囲)の若い番号から順に使います。

 Linux サーバの場合

サーバが FW の内側にあるときには、上記と同様に FW やルータで使用するポート番号を制限しますが、サーバがグローバル側にあって直接インターネットへ接続されている場合は、サーバ側で使用するポート番号を規定する必要があります。Debian の場合、発信元で使うポート番号は default で32,768~61,000となっています。

~# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

これを変更すれば良いので、/etc/sysctl.conf に

net.ipv4.ip_local_port_range = 32768  59999

と設定して、

sysctl -p

これで、使用するポート番号は32,769~59,999迄となります。但し、RTX1100 とは違い、Linux サーバでは設定した最後の番号から、若い番号へ向かってポート番号を使用していきます。よほど沢山のセッションが発生する環境でなければ、この設定で接続元のポート番号は50,000番台になると思います。
※なんらかの理由で使わないセッションが大量に残ってしまう場合には、セッションタイムアウトのパラメータ値の変更が必要となるかもしれません。