FreeBSD 5.3 RELEASE で NIC 2枚差しPCルーターを作ってみた.私はBフレッツに使用している.もちろんフレッツADSLでも使える.
/etc/rc.conf に以下を追加しておく.openを指定しておかないと,カーネル再構築後,リモートから入れなくなってしまう.
firewall_enable="YES" firewall_type="open" firewall_quiet="NO"
rootになる.
% su -
Password:
コンフィグレーションファイルのディレクトリに移動.
# cd /sys/i386/conf
ファイルをコピー.
# cp GENERIC router
なお「router」は自分の好きな名前でよい.
エディタで router を開いて以下のように編集.
カーネルをコンパイル,インストールする.
# config router
# cd ../compile/router
(なお FreeBSD 4.X では移動するディレクトリが違うので注意)
# make depend
# make
# make install
再起動する.
# reboot
rootのままで,ファイル /etc/ppp/ppp.conf を編集する.
なお,以下のファイルで,
ここから------------------------------------
default: set log Phase Chat LCP IPCP CCP tun command set device PPPoE:rl1 set speed sync set mru 1454 set mtu 1454 set ctsrts off set timeout 0 accept CHAP add default HISADDR # enable dns so-net: set authname xxxx@yyy.so-net.ne.jp set authkey passwordここまで------------------------------------
上のファイルで,default: や so-net: などのラベルは行頭から書き,そのほかの行は行頭に1個以上の空白かTABを入れること。私はすべて行頭から書いてしまい,動かない原因がわからずしばらく悩みました.
/etc/resolv.conf にDNSが記述してあれば,上記の enable.dns はコメントのままでよい.
接続テストをしてみる.
# ppp -ddial so-net
Working in ddial mode
Using interface: tun0
ifconfig コマンドで,tun0にアドレスが割り当てられていれば成功.
# ifconfig
tun0: flags=8051mtu 1454 inet XXX.XXX.XXX.XXX --> XXX.XXX.XXX.XXX netmask 0xffffffff <-- アドレスが表示されればOK Opened by PID 20
起動時に自動接続するために,/etc/rc.conf に以下の内容を追加する.
ppp_enable="YES" ppp_mode="ddial" ppp_profile="so-net" ppp_nat="NO"
最後の行は,ppp内蔵のNAT機能を無効にするため(あとでnatdを使ってアドレス変換を実現するのでこの機能はいらない)
natdの設定ファイルを /etc/natd.conf として以下のように作る.もちろんrootで.
ここから---------------
deny_incoming no use_sockets yes same_ports yes unregistered_only yes dynamic yesここまで---------------
natdをFreeBSD起動時に有効にするため,/etc/rc.conf に以下を追加する.
gateway_enable="YES" natd_enable="YES" natd_interface="tun0" natd_flags="-f /etc/natd.conf" portmap_enable="NO"
/etc/ipfw.conf として,以下のように作成する.この例は必要最低限のものであり,ほかにもマルチキャストの拒否などおこなっておいた方がよいものがある.
なお,rl0は内側のインターフェースである(マシンによって異なります).
ここから----------------------------------------------
# Firewall rules by Tsukubane
fwcmd="/sbin/ipfw -q"
# すべてのルールを初期化
${fwcmd} -f flush
# 断片化したパケットを拒否
${fwcmd} add 100 deny ip from any to any via tun0 frag
# pingを拒否
${fwcmd} add 200 deny icmp from any to any recv tun0
# ループバックを許可
${fwcmd} add 300 allow ip from any to any via lo0
# ローカルネットワークとの通信はすべて許可
${fwcmd} add 400 allow ip from 192.168.0.0/24 to any via rl0
${fwcmd} add 500 allow ip from any to 192.168.0.0/24 via rl0
# 外のネットワークからローカルアドレスを詐称して来るものを拒否
${fwcmd} add 600 deny all from 192.168.0.0/24 to any recv tun0
${fwcmd} add 700 deny all from 172.16.0.0/12 to any recv tun0
${fwcmd} add 800 deny all from 10.0.0.0/8 to any recv tun0
${fwcmd} add 900 deny all from 127.0.0.0/8 to any recv tun0
# 外のネットワークからローカルアドレス宛に来るものを拒否
${fwcmd} add 1000 deny all from any to 192.168.0.0/24 via tun0
${fwcmd} add 1100 deny all from any to 172.16.0.0/12 via tun0
${fwcmd} add 1200 deny all from any to 10.0.0.0/8 via tun0
${fwcmd} add 1300 deny all from any to 127.0.0.0/8 via tun0
# NetBiosを拒否
${fwcmd} add 3000 deny udp from any 137-139,445 to any
${fwcmd} add 3100 deny tcp from any 137-139,445 to any
${fwcmd} add 3200 deny udp from any to any 137-139,445
${fwcmd} add 3300 deny tcp from any to any 137-139,445
# natの設定
${fwcmd} add 4000 divert natd all from any to any via tun0
# 通信が確立したパケットを許可
${fwcmd} add 5000 allow tcp from any to any established
# 外へ出ていくものは許可
${fwcmd} add 5100 allow ip from any to any out via tun0
# 外への名前問い合わせを許可(ルーターマシンでDNSを運用している場合)
${fwcmd} add 6000 allow udp from any to any 53 out
${fwcmd} add 6100 allow udp from any 53 to any in
# 外への時刻問い合わせを許可(ルーターマシンでntpを運用している場合)
${fwcmd} add 6200 allow udp from any to any 123 out
${fwcmd} add 6300 allow udp from any 123 to any in
# 外からのWWW接続を許可(ルーターマシンでHTTPを運用している場合)
${fwcmd} add 6400 allow tcp from any to any 80 setup
# 外からのSSH接続を許可(ルーターマシンでSSHを受け付ける場合)
${fwcmd} add 6600 allow tcp from any to any 22 setup
# 上記に該当しないものはログを取って拒否
${fwcmd} add 9000 deny log tcp from any to any
${fwcmd} add 9100 deny log udp from any to any
${fwcmd} add 9200 deny log icmp from any to any
ここまで----------------------------------------------
/etc/rc.conf に以下を追加.