🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.net.ip
Article #1

Java の IPV6_V6ONLY サポート

#1
From: Yasushi Shinjo
Date: Thu, 24 May 2012 08:16
56 lines
3977 bytes
新城@筑波大学です。こんにちは。

Java で IPv6 専用のサーバを書こうすると、かなり面倒だというこ
とがわかりました。普通に IPv6 any (::) で bind すると、IPv4
への要求も受け付けてしまいます。

C 言語、というか、普通の Socket API なら、こんな感じで、IPv6
専用にできます。

	s = socket( PF_INET6, SOCK_STREAM, 0 );
	on = 1;
	setsockopt( s,IPPROTO_IPV6, IPV6_V6ONLY,&on,sizeof(on) );

Java のドキュメントを見ると、将来サポートするというのが出てきました。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/net/ipv6_guide/index.html#special
http://docs.oracle.com/javase/1.5.0/docs/guide/net/ipv6_guide/index.html#special

------------------------------------------------------------
特殊な IPv6 アドレス型
未指定アドレス (:: IPv4 の 0.0.0.0 に対応)
...
:: にバインドされているとき、メソッド ServerSocket.accept は、
IPv6 ホストと IPv4 ホストの両方からの接続を受け入れます。現在
の Java プラットフォーム API では、IPv6 ホストからの接続だけ
を受け入れるように指定する方法はありません。
...

    注: このあと説明するオプションは、
    Draft-ietf-ipngwg-rfc2553bis-03.txt で導入されています。それ
    が標準規格になった時点で、そのオプションが Java 2 プラット
    フォームでサポートされる予定です。
...
プリケーションによっては、AF_INET6 ソケットの使用を IPv6 通信
だけに限定したい場合があります。そのようなアプリケーションで
は、IPV6_V6ONLY ソケットオプションを定義します。このオプショ
ンをオンに設定すると、IPv6 パケットだけを送受信するためにその
ソケットを使用できます。デフォルトでは、このオプションはオフ
になっています。
------------------------------------------------------------

この Java での IPV6_V6ONLY のサポートは、どういう状況になって
いるんでしょうかね。

上のドキュメントには、
java.net.NetworkInterface.getNetworkInterfaces() して、
ifconfig -a 相当のことをしながら、自分が使えるIP アドレスを探
してなんとかしろ、みたいなことは書いてあります。でも、any
(::) で書きたいですよね。::1 の要求もあるし。それに、IPv6 の
ドレスを列挙できても、プライバシ対策の temporary なものまで全
部見つかるので、どれが普通に使えるものなのか分かりません。

困ったなあ。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 情報工学        \\
Technical Details
Message-ID: <85wr42hu4d.fsf@is.tsukuba.ac.jp>
Path: arc1-ca.pugleaf.net!pr3ni39920pbb.0!nntp.google.com!news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!tomockey.ddo.jp!news-haigo!norn-news!news.heimat.gr.jp!rlss-news!ie.u-ryukyu.ac.jp!gama.is.tsukuba.ac.jp!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: 10636f,715a63a705f34736,start
X-Google-NewGroupId: yes
X-Google-Thread: 11648c,715a63a705f34736,start
X-Google-NewGroupId: yes
X-Google-Attributes: gid817af8fe21,gidd8fdc9f06b,domainid0,public,usenet
X-Google-Language: Japanese,JIS
Received: by 10.68.220.230 with SMTP id pz6mr6409163pbc.3.1337847367302;
        Thu, 24 May 2012 01:16:07 -0700 (PDT)
Path: arc1-ca.pugleaf.net!pr3ni39920pbb.0!nntp.google.com!news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!tomockey.ddo.jp!news-haigo!norn-news!news.heimat.gr.jp!rlss-news!ie.u-ryukyu.ac.jp!gama.is.tsukuba.ac.jp!not-for-mail
From: Yasushi Shinjo <yas@is.tsukuba.ac.jp>
Newsgroups: fj.net.ip,fj.comp.lang.java,fj.net.programming
Subject: Java の IPV6_V6ONLY
 サポート
Date: Thu, 24 May 2012 17:16:02 +0900
Organization: Institute of Information Sciences and Electronics, University of Tsukuba
Lines: 56
Message-ID: <85wr42hu4d.fsf@is.tsukuba.ac.jp>
NNTP-Posting-Host: maple.is.tsukuba.ac.jp
Mime-Version: 1.0
X-Trace: gama.is.tsukuba.ac.jp 1337847328 12461 130.158.80.244 (24 May 2012 08:15:28 GMT)
X-Complaints-To: news@gama.is.tsukuba.ac.jp
NNTP-Posting-Date: Thu, 24 May 2012 08:15:28 +0000 (UTC)
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.91 (usg-unix-v)
Cancel-Lock: sha1:DM0vTvsf8vE6p5FIYt+vmh7WzyU=
Content-Type: text/plain; charset=iso-2022-jp