確かめたことなど。
240ポート
ルータは WSR-1166DHPL。
同一接続先IPv4+同一ポートに連続アクセスすると、241回目につまり、約30秒後にぽつぽつアクセスできるようになる。
どうも240ポートの中から回収されたステートのポートを引けるという訳でもなさそうで
15グループの1つの、16ポートの中からしか空を調べていないのかもしれない気がする。
FreeBSD 直付け
gif トンネルを BR まで張れば
curl --local-port 使えるポート http://hoge とすれば、正常にレスポンスは返ってくる。
問題は NAT(ポート先の 16個*15グループ 指定が出来るもの)なのだけれど。。。
また ping も不可だった。 RFC7597
pf
nat 先のポート指定が不十分。レンジは可能だが、レンジ*15 というのが出来ない。
nat on gif0 from any to any -> xxx.xxx.xxx.xxx port { xxx:xxx, xxx:xxx } # { } が不可
1つのレンジのみで動かしてみると、使えはするがすぐ(16個で)詰まる。
probability も nat に使えない。
nat on gif0 from any to any probability 6% -> xxx.xxx.xxx.xxx port xxx:xxx # probability は使えない
tagged は使えるが、nat ルールより先に tag することが出来ない。
pass out on gif0 tag group1 6% # これが先に評価されれば。。。OpenBSD なら pass nat-to が使える?
nat on gif0 from any to any tagged group1 -> xxx.xxx.xxx.xxx port xxx:xxx
ipfw
nat 先にポート指定がそもそも出来ない。tag や skipto や評価順は柔軟なんだけど。。。
ipf
nat 先にポート指定はレンジで出来るが、15グループというのが同じく無理。
その他
効率的なのは 240ポート から空きを探せることだと思うけど
WSR-1166DHPL も挙動からして Linuxのiptables例 のように
15グループへは $seq%15 やラウンドロビンかもしれない。