As I Please

MTのいんすとーるの練習と、その他びぼうろく・・・

socat での ipv6 アドレス指定

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
TCP6:[::1]:port_service
あたりだった。localhost は たぶん、DNSの設定で localhostへの問い合わせが ちゃんと v6で帰って来ないとダメだろう。
ブラケットで囲うのが正解か。
にしても、サーバが v6優先で立ち上がるというのは、rubyの仕様っぽいのか。

コメントする