socat で、外部 tcp4 -> 内部(localhost) tcp6 へのリレーをしようとして、localhost の ipv6 アドレス指定でちょいつまづいたのでメモ。
最初は v6の localhost なので、::1 かと思って、
socat TCP4-LISTEN:port_recive,fork TCP6:::1:port_serviceとやっていたら、
TCP6: wrong number of parameters (4 instead of 2)というエラーを返して、最初だけは繋がるが2回目以降が繋がらないという状況に陥った。
TCP6:fe80::1:port_serviceもダメ。
TCP6のアドレス指定と、コロン(:)がおかしいのだろうと思っていろいろ試してうまくいったのは、
TCP6:localhost:port_serviceあたりだった。localhost は たぶん、DNSの設定で localhostへの問い合わせが ちゃんと v6で帰って来ないとダメだろう。
TCP6:[::1]:port_service
ブラケットで囲うのが正解か。
にしても、サーバが v6優先で立ち上がるというのは、rubyの仕様っぽいのか。
コメントする