作業日記@HatenaBlog

各種の作業メモ

ブロードバンドルータ化

ネットワーク構成

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