2015年6月4日

IPv6で、NICにアドレスを設定する方法

設定ファイルを探してみても、IPv6関連のファイルが無いっ!という時のために。
※設定が無ければ作ればいいと思うの!というディストリビューション用。
※カーネルをIPv6のサポートありでビルドしてある事が前提です。

---
デフォルトルートの設定 -> IPv6で、route add

---
NICにIPv6のアドレスを固定で割り当てるには・・・
(ifconfigで一時的に割り当てるのでなく、起動後も設定を残したい場合。)
  1. 設定ファイルを作ります。(内容は、NIC用のアドレス/プレフィックス長とゲートウェイのアドレス)
  2. 設定を読み込むスクリプトを作ります。(今回は、rc.inet1を改造)

設定ファイルを作ります


rc.inet1.confには、IP4の設定しか入っていないと思います。
(rc.inet1の先頭で読み込まれます。)

IPV6用の設定ファイルを、作りましょう。
(rc.inet1.confの中に書いてもよいですが、分けておいたほうが無難です。)
今回は、ファイル名を"rc.inet1_v6.conf"にしてみました。

IPv6用に分かりやすい名前の変数を作りましょう。
必要なのは、NICに割り当てるアドレス/プレフィックス長と、ゲートウェイのアドレスです。

---
例: rc.inet1_v6.conf
※ ファイル名、変数名は独自に決めたものです。
※ rc.inet1.confを流用して作っています。

# eth0
IPADDR_V6[0]="アドレス/プレフィックス長"

# eth1
IPADDR_V6[1]=""

# eth2
IPADDR_V6[2]=""

# Gateway
GATEWAY_V6="ゲートウェイのアドレス"


設定を読み込むスクリプトを作ります

今回は、rc.inet1を改造します。

---
例: rc.inet1
※ かなり省略しています。

# 設定を取り込みます。
. /etc/rc.d/rc.inet1.conf
. /etc/rc.d/rc.inet1_v6.conf

# (略)

# ("IPADDR"で検索して、改造したい部分を見つけます)
# IPv4
if [ ! "${IPADDR[$i]}" = "" ]; then
  (略)
fi
# IPv6 (IPv4用のコードをコピーして改造します)
if [ ! "${IPADDR_V6[$i]}" = "" ]; then
  /sbin/ifconfig ${1} add ${IPADDR_V6[$i]}
  # ゲートウェイはデバイス毎に設定しないとrouteコマンドが動かないので、
  # gateway_up()からコピーして改造します。
  if [ ! "$GATEWAY_V6" = "" ]; then
    /sbin/route -A inet6 add default gw ${GATEWAY_V6} metric 1 dev ${1}
  fi
fi

# ("GATEWAY"で検索して、改造したい部分を見つけます)
# gateway_down() からコピーして改造します。
gateway_down_v6() {
  if /sbin/route -6 -n | grep "^::/0" 1> /dev/null ; then
    # 各デバイスに設定したデフォルトゲートウェイを消します。(個別に消さなくても大丈夫)
    /sbin/route -A inet6 del default
  fi  
}

試します。

最初に、ネットワークの停止を試します。(書き間違いなどでエラーが発生しないか確認したいので、起動より停止の方が安全。)
※ネットワーク経由で作業している時は、接続が切れます。要注意。
./rc.inet1 down

設定値を確認します。
例:
ifconfig
ifconfig -a
route
route -6
※不要なアドレスが設定されていないか確認します。
※NICがダウンしたか確認します。
※不要なルートが設定されていないか確認します。


ネットワークを開始してみます。
./rc.inet1 up

設定値を確認します。
(略)
※IPv6アドレスが正しく設定されたか確認します。
※想定どおりにNICがUPしたか確認します。
※デフォルトルートが正しく設定されたか確認します。


もう一度、ネットワークを停止してみます。
./rc.inet1 down

設定値を確認します。
(略)
※不要なルートが残っていないか確認します。

あとは、お好みで。


---
注意:
ケーブルが接続されていない場合などは、不要なルートができたり、消せなくなったりする場合があります。
(アドレスが見つからない などのエラーメッセージがでる場合も。)

アドレスが重複した場合は、
SIOCSIFADDR: File exists
などが表示されます。

0 件のコメント:

コメントを投稿