IPv6 Router Advertisement Daemon
IPv6で必要となるルータ広告を行う為のLinuxDaemon。
LinuxサーバをIPv6ルータとして動作させる時に利用する事が多い。
Raspberry PiをIPv6実験環境として利用したい場合には重宝する。
1. ビルド・インストール
radvdは細かいオプションを付与しなくてもビルドは成功する。
今回はインストール先を分離する為にprefixのみ付与しておく。
$ tar zxvf radvd-2.16.tar.gz $ cd radvd-2.16 $ ./configure --prefix=/usr/local/radvd-2.16 $ make $ make install $ cd /usr/local $ ln -s /usr/local/radvd-2.16 radvd $ cd /etc $ ln -s /usr/local/radvd/etc radvd
2. 起動オプションの設定
radvdを起動させる為のユーザ指定を行う。
chroot環境として動かす場合は、下記ファイルを書き換える事でchroot化出来る。
# vi /etc/default/radvd -------------------------------------------------- # No chroot; /var/run/radvd must be owned by -u. OPTIONS="-u radvd" # Chroot; directory structure under /var/chroot/radvd has to be populated. #OPTIONS="-u radvd -t /var/chroot/radvd"
3. 起動スクリプトの作成
Redhatの場合は、"SOURCE/redhat/radvd.init"をOS指定ディレクトリにコピーすれば良い。
Debianの場合は下記ファイルの様に、一部を改変する必要がある。
$ vi /etc/init.d/radvd -------------------------------------------------- #!/bin/sh # # radvd radvd is the router advertisement daemon for IPv6. # ### BEGIN INIT INFO # Provides: radvd # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Router Advertisement Daemon for IPv6 ### END INIT INFO
# Source function library.
. /lib/lsb/init-functions
[ -f /etc/default/radvd ] && . /etc/default/radvd
RETVAL=0
PROG="radvd"
LOCKFILE=/var/lock/subsys/radvd
# See how we were called.
case "$1" in
start)
if [ ! -f /etc/radvd/radvd.conf ]; then
echo $"Configuration file /etc/radvd/radvd.conf missing" 1>&2
exit 6
fi
if [ `id -u` -ne 0 ]; then
echo $"Insufficient privilege" 1>&2
exit 4
fi
echo -n $"Starting $PROG: "
/usr/local/radvd/sbin/radvd $OPTIONS
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
touch $LOCKFILE
else
if [ -f $LOCKFILE ]; then
RETVAL=0
fi
fi
;;
stop)
echo -n $"Stopping $PROG: "
killproc radvd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $LOCKFILE
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
reload|force-reload)
echo -n $"Reloading $PROG: "
killproc radvd -HUP
RETVAL=$?
echo
;;
condrestart|try-restart)
if [ -f $LOCKFILE ]; then
$0 stop
$0 start
RETVAL=$?
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|try-restart|reload|force-reload}"
exit 2
esac
exit $RETVAL
4. 起動準備
実行ユーザ作成と、iptablesのフィルタリング解除を行う。
クライアントからRAへ通信を行うには、下記のICMPv6パケットを通す必要がある。
・iptables開放 ================================================== # ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT # ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT # ip6tables -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT # ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT # ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT # ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT
・実行ユーザ、グループ作成 ================================================== $ groupadd radvd $ useradd -g radvd -d /var/run/radvd -s /usr/sbin/nologin radvd
・起動スクリプト登録 ================================================== $ chmod 755 /etc/init.d/radvd $ systemctl enable radvd
5. コンフィグ作成