ブロードバンドルータ化
ネットワーク構成
freebsd-update でカーネルアップデートをするため、 GENERIC カーネルのみで動くようにしたい。
とりあえず mpd4 + ng_ipfw + ng_nat を想定する。
mpd4 + NAT + IPFW で設定する。
ネットワーク構成図は次のとおり。
Internet | | +---(em0)---+ ← WAN 側インタフェースは em0 | (ng0) | ← netgraph による mpd4 の PPPoE 接続用仮想インタフェース | | | | (ipfw) | ← firewall | | | | (NAT) | ← NAT +---(re0)---+ ← LAN 側インタフェースは re0 (192.168.0.1/24) | | LAN ← 192.168.0.0/24
/etc/rc.conf 記述
ファイアウォール、NAT の設定を /etc/rc.conf に記述する。
LAN 側アドレス指定
ifconfig_re0="inet 192.168.0.1 netmask 255.255.255.0"
NAT 有効化
gateway_enable="YES" natd_enable="YES" natd_interface="ng0" natd_flags="-f /etc/natd.conf" ← natd デーモンの設定は /etc/natd.conf に記述する。 portmap_enable="NO"
firewall 有効化
firewall_enable="YES" firewall_script="/etc/rc.firewall" ← フィルタリングルールを /etc/rc.firewall に記述する firewall_type="open" firewall_logging="YES" ← /var/log/security に ipfw のフィルタリングログを記録する
/etc/natd.conf の記述内容
# ログの記録(yes なら /var/log/alias.log に記録) log no # 起動時のメッセージ verbose no # 外部からの接続要求 (yes なら拒否) deny_incoming no # 拒否したパケットの記録 log_denied yes log_facility security # socket を利用し NAT の失敗を回避 use_sockets yes # 可能な限り同じポート番号を利用 same_ports yes # プライベートアドレスのみ変換 unregistered_only yes # インタフェース指定 interface ng0 # ??? dynamic yes # ??? port 8668
/etc/rc.firewall
under construction...
フィルタリング参考
http://www.fujie.jp/freebsd/freebsd_router_ipfw.html
http://d.hatena.ne.jp/Hossy/20091231/p2
参考URL:
http://gato.intaa.net/contents/freebsd_router/
http://bakuretsu.atso-net.jp/bakuretsu/freebsd/router.html
http://griffonworks.net/freebsd/ipfw_and_natd_for_adsl.html
http://www.gadgety.net/shin/tips/unix/ipfw.html
http://griffonworks.net/freebsd/ipfw.html
http://homepage1.nifty.com/xpress/homelan/bsds2ip.html
http://sns.tokoha-u.ac.jp/?m=diary&a=page_detail&target_c_diary_id=13049