NAT マシンの IP アドレスの変更

NAT を行うゲートウェイサーバの内部ネットワークのアドレスを変更するときの作業項目をまとめる. ここでは,内部ネットワークを 192.168.0.0/24 から 192.168.33.0/24 へ変更し,ゲートウェイの内部側アドレスを 192.168.33.1,内部ドメイン名を local.www.kkaneko.jp とする場合を例とする.

ゲートウェイサーバの設定

内部側インタフェースのアドレス変更

DNS サーバの設定

BIND は FreeBSD の基本システムには含まれておらず,ports/packages (dns/bind9xx) からインストールする. 設定ファイルは /usr/local/etc/namedb/ 以下に置かれる.

NAT とパケットフィルタの設定

現在の FreeBSD で標準的に使われるパケットフィルタは pf である. NAT の設定は /etc/pf.conf に書く. 設定例は次の通り(em1 の部分は,外部側インタフェース名に置き換える).

ext_if = "em1"
int_net = "192.168.33.0/24"
nat on $ext_if from $int_net to any -> ($ext_if)

フィルタルールの中に内部ネットワークのアドレスを直接書いている箇所があれば,192.168.0.0/24 を 192.168.33.0/24 に変更する. 設定の確認と反映は,次のコマンドを実行して行う.

pfctl -nf /etc/pf.conf
pfctl -f /etc/pf.conf

pf を起動時に有効にするには,次のコマンドを実行する.

sysrc pf_enable="YES"
sysrc gateway_enable="YES"

ipfw を使用している場合は,ルールファイル (例: /etc/ipfw.rules) 中の 192.168.0 を 192.168.33 に変更する. ipfilter を使用している場合は,/etc/ipnat.conf 中の 192.168.0 を 192.168.33 に変更し,次のコマンドを実行して反映する.

ipnat -CF -f /etc/ipnat.conf

DHCP サーバの設定

ISC DHCP は開発が終了しており,後継の Kea DHCP (net/kea) が推奨される. Kea の設定ファイルは /usr/local/etc/kea/kea-dhcp4.conf である. サブネット,アドレスプール,デフォルトゲートウェイ (routers),DNS サーバの各項目を,新しいネットワークアドレスに変更する. 設定例は次の通り.

"subnet4": [
  {
    "id": 1,
    "subnet": "192.168.33.0/24",
    "pools": [ { "pool": "192.168.33.100 - 192.168.33.200" } ],
    "option-data": [
      { "name": "routers", "data": "192.168.33.1" },
      { "name": "domain-name-servers", "data": "192.168.33.1" },
      { "name": "domain-name", "data": "local.www.kkaneko.jp" }
    ]
  }
]

設定の反映は,次のコマンドを実行して行う.

service kea restart

ISC DHCP (net/isc-dhcp44-server) を使用している場合は,/usr/local/etc/dhcpd.conf 中の 192.168.0 を 192.168.33 に変更し,次のコマンドを実行して反映する.

service isc-dhcpd restart

自動マウント (autofs) のマップファイルの更新

FreeBSD の自動マウントは autofs で行う (amd は廃止された).

NIS のマップの更新

NIS を使用している場合は,NIS マスタ上の /etc/hosts のうち,アドレスを変更したホストの記述を書き換え,次のコマンドを実行してマップを再構築する.

cd /var/yp
make

クライアント側の設定変更

FreeBSD のクライアント

NFS クライアントの設定

確認

設定変更後,次のコマンドを実行して,アドレス,経路,名前解決,NAT の動作を確認する.

ifconfig
netstat -rn
host www.kkaneko.jp
pfctl -s nat