Prev Next

ルータ

情報実験室を独立したネットワーク空間にするためには ルータの設置が必要です。 ここでいうルータはネットワークを複数枚インストールして、 パケットをフォワードするように設定した普通のPCです。

ルータの設置

ルータのOSインストール

ルータの設定

ホスト名

sudo

ssh

sysctl

ネットワーク

iptables

不要パッケージの削除

exim4

cron

gate ユーザーの登録

gate更新通知受け取りデーモン

dhcpd

仮運用

本線ルータが時々見えなくなる問題

linux カーネルの初期設定で、 複数のネットワークインターフェース を持つ場合には, arp のアドレス解決要求に対し、パケットを受け取って いない方のインターフェースのものであっても 知っているものがあれば何でも返してしまうという仕様による。

隔離したつもりがそうできていなかった。

回避方法は、sysctl のパラメータを以下のように設定

net.ipv4.conf.eth0.arp_ignore = 1

同一ブロードキャストドメインを持つ別のネットワークにまたがる ホストを構築するときには注意が必要

gate スクリプト書き

gate のデータベースが手に入ったので gate 情報から dhcpd.conf を作るシェルスクリプトを書いた

#!/bin/sh
#
# gate database to dhcpd.conf
# direct conversion
#

exec >&- <&-

GATE_DIR=/home/gate
export LC_CTYPE=C LC_ALL=C LANGUAGE=C LANG=C
DATE=`date`
echo "[${DATE}] $$:gate knocked" 1>&2

DIR=${GATE_DIR}/pipdb/stable
TMP=${GATE_DIR}/dhcpd-gate-pip-test.conf
FILE=${GATE_DIR}/dhcpd-gate-pip.conf

cat <<EOF>${TMP}
subnet 192.168.16.0 netmask 255.255.255.0 {
}

group dhcpclients {
EOF

for i in ${DIR}/*
do
    FCHAR=`echo $i | rev | cut -d/ -f1 | rev | cut -c1`
    LCHAR=`echo $i | rev | cut -c1`
    if [ ${FCHAR} = '.' ]; then continue; fi
    if [ ${FCHAR} = '#' ]; then continue; fi
    if [ ${LCHAR} = '~' ]; then continue; fi
    # IP=`cat $i | egrep -i "^ip:" | cut -c5- | sed 's/192\.168\.16\./192.168.17./'`
    IP=`cat $i | egrep -i "^ip:" | cut -c5-`
    MAC=`cat $i | egrep -i "^eth:" | cut -c6-`
    HOST=`cat $i | egrep -i "^hostname:" | cut -c11-`
    if [ "x${IP}" = 'x' -o "x${MAC}" = 'x' -o "x${HOST}" = 'x' ]; then
      continue
    fi
cat <<EOF>> ${TMP}
  host ${HOST} {
    hardware ethernet ${MAC};
    fixed-address ${IP};
  }
EOF
done

echo "}" >> ${TMP}

# check dhcpd.conf
/usr/sbin/dhcpd -cf ${TMP} -t > /dev/null 2>&1

if [ "x$?" != "x0" ]; then
    echo "dhcpd.conf: syntax error: cannot update dhcpd.conf"
    exit 1;
fi

# update dhcpd.conf
cp ${TMP} ${FILE}

# restart dhcpd
# please register sudoers, with NOPASSWD
sudo /etc/init.d/isc-dhcp-server restart 1>&2

#EOF

設定の調整と確認

Todo


Prev Index Next