NAT内のSRCDSからサーバブラウザにうまく登録されない問題の
原因がわかったっぽい
結論から言うと、NATの動作
どうもSteamのブラウザサーバは、登録しに来るIPアドレスとソースポートしか記録してないようだ
ポイントはサーバをブラウザに登録しに行く時のソースポートで
NATから外に出るときに内側から外側でポートの変換がかかり、別のポートになるのが標準だ
Valveのブラウザサーバは、サーバからの登録要請を受けたときに
IPアドレスと発信元ポートを自分のテーブルに乗せ、それを要求するクライアントに配ってることが判明
そりゃー無理だわ、なんせNAT変換後はポートがランダムになるわけだから
その空いてもいないポートにUDP投げても返事が返ってくるわけがない
ブラウザサーバへの登録時にはソースポートに向けてパケットを投げて返すようだが
FWなどのkeep aliveが生きていれば帰りもちゃんとNAT変換されて元のポートに帰ってくる
だから登録OKと言われるわけだ
サーバブラウザには待ち受けていないポートが記録されているにもかかわらず、ね
ng0 udp 192.168.1.3:27035 -> 58.1.250.30:54397 -> 68.142.72.250:27011 MULTIPLE:MULTIPLE
INTERNETに直で繋がるマシンに問題が無いのは、NAT変換自体がかからないから
発信ポートが、待ち受けているポートと一緒の時はこのようなこと自体が発生しない
ところで、なんで誰もこのことを書かなかったんですかー
おかげでむちゃくちゃはまったんですが(´;ェ;`)ウゥ・・・
海外のforum見に行っても俺は諦めてるとか書いてたり
解決してる雰囲気が全く見られなかったのはどういうことですか
どこ見てもINPUTだけredirectしてて
たまにステートフルの意味をすっかり忘れて(?)OUTPUTをガシガシ開けてるのを見たものの
こういう動作をする物だという理解が全く見られなかったのですが・・・
レアなのかなぁ・・・オイラみたいのは
ねぇ・・・結局オイラはこれに4ヶ月も悩んだんだよパパン(ノ∀`)