next up previous contents
Next: 4.1.2 手動設定 Up: 4.1 FreeBSDとIPv6の設定 Previous: 4.1 FreeBSDとIPv6の設定

4.1.1 初期設定

FreeBSDでIPv6を設定する前に、FreeBSDでの設定の基本について知っていなければ なりません。

FreeBSDでは、標準システムの設定は /etc/rc.conf で行うことになっています。 /etc/rc.confを見れば分かるとおりに、実はこれは環境変数の定義ファイルに なっています。これらの定義ファイルを /etc/rc.d/ディレクトリ以下にある設定用のスクリプトファイルが読み込むことで、 様々な標準設定がなされるようになっています。 しかし、システムのデフォルト値や初期値なども全部自分で /etc/rc.conf に 書かねばならないとしたら面倒です。そこで、上記のスクリプトファイルは、 必ず最初に /etc/defaults/rc.conf を読み込むようになっています。そして、 その次に /etc/rc.conf を読み込むことで、最初に読んだ /etc/defaults/rc.conf に書かれた環境変数と同じ変数が、/etc/rc.conf に書かれていた場合にのみ、 デフォルトの設定が変更されるようになっているのです。従って、FreeBSDで 設定を行う際の第一歩は、/etc/defaults/rc.conf を眺めて、それと異なる設定 のみを /etc/rc.conf に書くことにあります(/etc/defaults/rc.conf からカット& ペーストで項目をコピーし、設定値を書き直すのが良いでしょう。スペルミスは 致命的です)。

FreeBSDの設定の基本  
/etc/defaults/rc.conf 変更しない事!
/etc/rc.conf 基本の設定ファイル
  /etc/defaults/rc.conf からコピーして編集すると良い
   

/etc/defaults/rc.conf の一部
### IPv6 options: ###
ipv6_enable="NO"		# Set to YES to set up for IPv6.
ipv6_network_interfaces="auto"	# List of network interfaces (or "auto").
ipv6_defaultrouter="NO"		# Set to IPv6 default gateway (or NO).
#ipv6_defaultrouter="2002:c058:6301::"	# Use this for 6to4 (RFC 3068)
ipv6_static_routes=""		# Set to static route list (or leave empty).
#ipv6_static_routes="xxx"	# An example to set fec0:0000:0000:0006::/64
				#  route toward loopback interface.
#ipv6_route_xxx="fec0:0000:0000:0006:: -prefixlen 64 ::1"
ipv6_gateway_enable="NO"	# Set to YES if this host will be a gateway.
ipv6_router_enable="NO"		# Set to YES to enable an IPv6 routing daemon.
ipv6_router="/usr/sbin/route6d"	# Name of IPv6 routing daemon.
ipv6_router_flags=""		# Flags to IPv6 routing daemon.
#ipv6_router_flags="-l"		# Example for route6d with only IPv6 site local
				# addrs.
#ipv6_router_flags="-q"		# If you want to run a routing daemon on an end
				# node, you should stop advertisement.
#ipv6_network_interfaces="ed0 ep0"	# Examples for router
					# or static configuration for end node.
					# Choose correct prefix value.
#ipv6_prefix_ed0="fec0:0000:0000:0001 fec0:0000:0000:0002"  # Examples for rtr.
#ipv6_prefix_ep0="fec0:0000:0000:0003 fec0:0000:0000:0004"  # Examples for rtr.
#ipv6_ifconfig_ed0="fec0:0:0:5::1 prefixlen 64"	# Sample manual assign entry
#ipv6_ifconfig_ed0_alias0="fec0:0:0:5::2 prefixlen 64" # Sample alias entry.
ipv6_default_interface="NO"	# Default output interface for scoped addrs.
				# Now this works only for IPv6 link local
				# multicast addrs.
rtadvd_enable="NO"		# Set to YES to enable an IPv6 router
				# advertisement daemon. If set to YES,
				# this router becomes a possible candidate
				# IPv6 default router for local subnets.
rtadvd_interfaces=""		# Interfaces rtadvd sends RA packets.
mroute6d_enable="NO"		# Do IPv6 multicast routing.
mroute6d_program="/usr/local/sbin/pim6dd"	# Name of IPv6 multicast
						# routing daemon.  You need to
						# install it from package or
						# port.
mroute6d_flags=""		# Flags to IPv6 multicast routing daemon.

stf_interface_ipv4addr=""	# Local IPv4 addr for 6to4 IPv6 over IPv4
				# tunneling interface. Specify this entry
				# to enable 6to4 interface.
stf_interface_ipv4plen="0"	# Prefix length for 6to4 IPv4 addr,
				# to limit peer addr range. Effective value
				# is 0-31.
stf_interface_ipv6_ifid="0:0:0:1"	# IPv6 interface id for stf0.
				# If you like, you can set "AUTO" for this.
stf_interface_ipv6_slaid="0000"	# IPv6 Site Level Aggregator for stf0
ipv6_faith_prefix="NO"		# Set faith prefix to enable a FAITH
				# IPv6-to-IPv4 TCP translator.  You also need
				# faithd(8) setup.
ipv6_ipv4mapping="YES"		# Set to "NO" to disable IPv4 mapped IPv6 addr
				# communication. (like ::ffff:a.b.c.d)
ipv6_firewall_enable="NO"	# Set to YES to enable IPv6 firewall
				# functionality
ipv6_firewall_script="/etc/rc.firewall6" # Which script to run to set up the IPv6 firewall
ipv6_firewall_type="UNKNOWN"	# IPv6 Firewall type (see /etc/rc.firewall6)
ipv6_firewall_quiet="NO"	# Set to YES to suppress rule display
ipv6_firewall_logging="NO"	# Set to YES to enable events logging
ipv6_firewall_flags=""		# Flags passed to ip6fw when type is a file
ipv6_ipfilter_rules="/etc/ipf6.rules"	# rules definition file for ipfilter,
					# see /usr/src/contrib/ipfilter/rules
					# for examples

非常に多くの設定項目がありますが、最初は実はほとんどがデフォルトままで 良く、以下の一箇所だけ /etc/rc.conf に書けば IPv6 が使えるようになります。 この際に注意するのは、決して /etc/defaults/rc.conf を書き換えてはいけない という事です。 (実は、FreeBSDはIPv6レディです。その意味は、何もしなくても基本的なIPv6の 仕組みは入っていて、最初から動いています)。

# /etc/rc.conf に以下を追加する
ipv6_enable="YES"		# Set to YES to set up for IPv6.

通常、/etc/rc.conf を編集したら、 /etc/rc.d/network_ipv6 を実行します。

        # /etc/rc.d/network_ipv6  start

実行すると、以下のようにインターフェースが設定されているでしょう。 但し、IPv6ルータが存在しない場合です。

# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=3<rxcsum,txcsum>
        inet 10.16.164.110 netmask 0xffffff00 broadcast 10.16.164.255
        inet6 fe80::290:27ff:fe51:c128%fxp0 prefixlen 64 scopeid 0x1
        media: Ethernet autoselect (100baseTX <full-duplex>)
        ether 00:90:27:51:c1:28
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
        inet 127.0.0.1 netmask 0xff000000
(なお、関係のない項目は上では省略されています。)

ここで、重要なのは、fxp0 の項目の中の inet6 の行です。これが、リンクローカルな IPv6アドレスで、これは前に説明したように、この下の ether の項目の上位3byte (00:90:27) の6bit目を反転させた (0290:27) と、下位3byte(51:c1:28)の間に 0xfffe を挟んだ値になっています( 0290:27ff:fe51:c128 )。 なお、アドレスの後ろの %fxp0 はインターフェースを(区別が付くように)示し、 その後の prefixlen 64 は現在のIPv6では64bitに固定されています(/64)。

また、lo0 はループバック用の擬似的なインターフェースですが(実際の物理的な インターフェースがあるのではなく、カーネル内部に仮想的に存在するインターフェースで、自分自身を指しています)、inet6 では、::1 であると同時に、リンク ローカルアドレス fe80::1 も付けられているのに注意してください。



Noriyo Kanayama