ルータの構築に必要なカーネルの再構築とppp.confの設定を行います。
なお、FreeBSD5.0以降では基本的にはカーネルの再コンパイルは不要ですが、オプションなど必要に応じて追加変更し再コンパイルを行うこともあります。
カーネル再コンパイル
手順は以下の通り。
# cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/MYROUTER
# ee /usr/src/sys/i386/conf/MYROUTER
# cd /usr/src
# make buildkernel installkernel KERNCONF=MYROUTER
(eeはFreeBSD標準搭載の簡易エディタ)
カーネルの設定ファイルに追加するオプション (FreeBSD4.X)
/usr/src/sys/i386/conf/MYROUTERに追加 (上の手順の2行目の作業)
options IPDIVERT # NATを使用する場合 options NETGRAPH options NETGRAPH_ETHER options NETGRAPH_PPPOE options NETGRAPH_SOCKET options DEVICE_POLLING # 高負荷時に耐える為に options HZ=1000 # 上の行とセットで options TCP_DROP_SYNFIN options IPFW2 # より高速なipfw2を使用する options IPFIREWALL options IPFIREWALL_VERBOSE # ipfwでログを取る場合 options IPFIREWALL_DEFAULT_TO_ACCEPT # 原則許可型フィルタリング
パケットフィルタリングを行わない場合は下4行は不要。
通常は原則不許可型のフィルタリングをするので最後の行はあまりお勧めしない。
ipfw2
を有効にするにはこれだけでは駄目でコンパイルし直す必要のあるファイルがあります。マニュアルを読んで下さい。 device
pollingを有効にするには /etc/sysctl.conf に kern.polling.enable=1 という一行を記入します。
ppp.confの設定
/etc/ppp/ppp.confの例
default: set device PPPoE:sis1 # sis1の部分はnicによって変わります set MRU 1454 set MTU 1454 set speed sync set log Phase Chat LCP IPCP CCP tun command add default HISADDR accept chap accept pap provider: set authname ○○@○○.○○.ne.jp # プロバイダから貰ったID (メールアドレスではない) set authkey ○○○○○○ # プロバイダから貰ったパスワード nat enable no # pppのNAT機能をオフにする square: #フレッツスクエアの例 set authname guest@flets set authkey guest
/etc/ppp/ppp.confを書く時の注意
プロファイル名(ここではdefault provider square)は必ず行頭から記述し、その他の行は行頭に必ず1つ以上スペースを入れる。
pppのNATはデフォルトでONなので複数グローバルIPアドレス利用時は注意
nat enable noの代わりに/etc/ppp.confでppp_nat="NO"を指定しても良い。
(NATが必要な場合もできるだけnatdで行う)
rc.confの設定
/etc/rc.confの例
ifconfig_sis0="inet ***.***.***.*** netmask 255.255.255.***" defaultrouter="***.***.***.***" # このマシンのIPアドレスと同じでいいです gateway_enable="YES" # この指定を忘れないこと hostname="hoge.example.com" # ホスト名だけでもいいです inetd_enable="NO" kern_securelevel_enable="NO" ipv6_enable="NO" keymap="jp.106" sendmail_enable="NO" sshd_enable="YES" portmap_enable="NO" firewall_enable="YES" #firewall_script="/etc/my_ipfw_rule" #独自のipfwルールファイル firewall_type="MyRouter" #ルールファイル内のエントリ名 ppp_enable="YES" ppp_mode="ddial" ppp_profile="provider" ppp_nat="NO" #(pppによる)NATを禁止する natd_enable="NO" #(natdによる)NATが必要ならYES natd_interface="tun0"
ifconfig_****の部分はNICによって変わります。
ppp_profile行の「provider」は/etc/ppp/ppp.confに書くプロファイル名と同じなら何でも良い。
独自のipfwルールファイルを作る場合、実際は上の様にせずfirewall_type="ファイル名"としても構わない。