コメント:
翻訳の正確さは保証しません。
必ず、原文と共に、使用してください。
____________________________________________________________________________
IPv6NOTE.txt
IPv6-DeleGate 実装メモ
現行バージョン: DeleGate/9.0.0
ftp://ftp.delegate.org/pub/DeleGate/alpha/
佐藤 豊
2005/4/22
____________________________________________________________________________
DeleGate バージョン9 で、最初の一歩として、IPv6 の対応を始めました。
ですが、必要にも迫られていないので、実際の IPv6 環境を持っていません
(インターネットへの IPv6 接続無しに。MacOS X で開発しています)。
私はこれが、実環境での使用に適用できるかわかりません。
ですから、実際に使っているユーザーからのコメントはありがたいです。
コメントは、オープンなフィードバックボード http://www.delegate.org/feedback/
(feedback@delegate.org 経由の) に気軽に送ってください。
このメモは、DeleGate に詳しいユーザーのために書いています。もし、そうでないなら、
リファレンスマニュアル <URL:http://www.delegate.org/delegate/Manual.htm> を
見てください。以下の 1.1 と 1.2 を読めば HTTP などの TCP/IP (v4/v6) 上の
一般的なアプリケーションプロトコル用のプロキシーサーバーとして、DeleGate を使っている
ほとんどのユーザーには十分だと思います。
1. 一般的問題
1.1 DeleGate でのIPv6 の表記
":" の代わりに "_" を使います。スコープ ID の "%" は、ほとんどの場合そのまま使えます。
例)
"::" は "__"
"fe80::12:34:56" は "fe80__12_34_56"
"fe80::12:34:56%en0" は "fe80__12_34_56%en0" (スコープ ID 付き)
"fe80::12:34:56%5" は "fe80__12_34_56%5" (番号表記のスコープ ID 付き)
1.2 IPv6/IPv4 ポートで受ける
-Phost:port オプションで IPv6 ホスト名かアドレスを指定する。
例)
-P9999 ... IPv4 だけで受ける (-P0.0.0.0:9999 と同じ)
-P__:9999 ... IPv6 だけで受ける
-P__0:9999 ... IPv4 と IPv6 の両方で受ける
-P9999,__:9999 ... IPv4 と IPv6 を個別に受ける
-Pfe80__12_34%en0:9999 ... IPv6 リンクローカルアドレスで受ける
-Pme:9999 HOSTS=me/fe80__12_34%en0 ... ホスト名で
"__0" は、ホストで利用可能なら、IPv6 マップされた IPv6 アドレスを使います。
1.3 IPv6/IPv4 アドレスへの名前解決
デフォルトで、IPv6 アドレスが最初に検索します。できなければ、次に IPv6 を使います。
この順番は、RES_AF パラメーターで制御できます。
例)
RES_AF=46 ... IPv4 アドレスを最初に検索します(デフォルト)
RES_AF=64 ... IPv6 アドレスを最初に検索します
RES_AF=4 ... IPv4 アドレスだけ検索します
RES_AF=6 ... IPv6 アドレスだけ検索します
また、各ホスト名に特別な前置子を付けることでも制御できます。
例)
hostname ... RES_TYPES の設定に従います
_46.hostname ... IPv4 アドレスを最初に検索します
_64.hostname ... IPv6 アドレスを最初に検索します
_4.hostname ... IPv4 アドレスだけ検索します
_6.hostname ... IPv6 アドレスだけ検索します
1.4 デフォルトのアクセス制御
"私と同じネットワーク上" には、64ビットマスクを使います。
これは、"./ffff_ffff_ffff_ffff__" を含む ".localnet" です。
1.5 IPv6 ポートへの接続
ほとんどの場合、自動的に行われます。"%scopeid" が URL に使えない場合、
それを回避するのに HOSTS パラメーターが必要です。
例)
HOSTS=v6host/fe80__12_34_56_78%ifn
SERVER=ftp://v6host
1.6 対象ホストのアドレスファミリーによるルーティング
HostList 内の各ホストへの "_6." と "_4." の前置子を導入しました。
例)
PROXY="v6gw:8080:_6.*" ... サーバーが IPv6 なら、プロキシーに転送する
SOCKS="v6gw:1080:_6.*" ... サーバーが IPv6 なら、SOCKS に転送する
2. アプリケーションプロトコル固有の問題
2.1 DNS (RFC1886)
以下の RR(ラウンドロビン) は、代理レゾルバー(SERVER=dns での) DNS-DeleGate
によって、転送されます。
AAAA
x.x.x...x.x.x.IP6.INT
2.2 FTP (RFC2428)
以下のコマンドは IPv6 アドレスを表現するためにサポートされました。
EPSV
EPRT
2.3 SOCKS (RFC1928)
以下のメソッド(TCP 用の) 受付アドレスは IPv6 で表現されます。
CONNECT
BIND
2.4 HTTP
xxxx::yy:zz は、http://xxxx--yy-zz.ipv6
3. 未サポート (今のところ)
subin/dgbind
スーパーユーザーによって所有される setuid ビットがセットされた
実行ファイル "subin/dgbind" は、DeleGate の実行無しに、スーパーユーザの下、
特権ポートにソケットを接続するのに使われます。
ですが、最新の MacOSX で、-P__:80 のように、IPv6 アドレスとともに使うと、
EACCESS で失敗します。
[要サポート]
HOSTS="v46host/{192.168.1.1,ABCD__12_34_56_78}
IPv4 と IPv6 アドレス混在のホスト定義。
[サポートしません]
UDP/IPv6 over SOCKS
[誰かが必要としたらサポートします]
DNS over UDP over IPv6
[誰かが必要としたらサポートします]
http://[x:x:x:x:x:x:x:x]
[サポートしません]
____________________________________________________________________________