金子邦彦研究室インストールFreeBSDFreeBSDipfw

ipfw

 

natd & ipfw 設定手順

  1. 旧バージョンの FreeBSD ではカーネルを再構築する
        # cd /usr/src/sys/i386/conf
        # cp GENERIC NEWKERNEL
    
    以下のオプションを/usr/src/sys/i386/conf/NEWKERNELに追加.
        options IPFIREWALL
        options IPFIREWALL_VERBOSE
        options IPDIVERT
    
    カーネルを再構築する. ここで書いた手順は、旧バージョンの FreeBSD で の手順である.新しい FreeBSD では、この手順で行なわないこと
        # /usr/sbin/config NEWKERNEL
        # cd /usr/src/sys/compile/NEWKERNEL
        # make depend
        # make
        # make install
        # sync
        # reboot
    
    ゲートウェイとして働くようにする.
    /etc/rc.confに以下の行を追加する.
        gateway_enable="YES"
        natd_enable="YES"
        natd_interface="外側インターフェース名"
    
  2. IPFWを有効にする.
    /etc/rc.conf以下の行を追加する
        firewall_enable="YES"
        firewall_script="/etc/rc.firewall"
        firewall_quiet="YES"
    
  3. IPFWの設定を行う
    /etc/rc.firewallの以下の部分を
        ############
        # Only in rare cases do you want to change these rules
        #
        ${fwcmd} add 100 pass all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        # If you're using 'options BRIDGE', uncomment the following line to pass ARP
        #${fwcmd} add 300 pass udp from 0.0.0.0 2054 to 0.0.0.0
    
    次のように書き直す
        ${fwcmd} add deny log tcp from any to any 23 in via 外側インターフェース名
        ${fwcmd} add deny log tcp from any to any 23 out via 外側インターフェース名
        ${fwcmd} add deny log tcp from any to any 23 in via 内側インターフェース名
        ${fwcmd} add allow ip from 192.168.33.0/24 to 外側IPアドレス in via 外側インターフェース名
        ${fwcmd} add allow ip from 192.168.33.0/24 to 192.168.33.255/32 in via 外側インターフェース名
        ${fwcmd} add allow ip from 192.168.33.0/24 to 192.168.40.0/24 in via 外側インターフェース名
        ${fwcmd} add allow ip from 外側IPアドレス to 192.168.33.0/24 out via 外側インターフェース名
        ${fwcmd} add allow ip from 192.168.40.0/24 to 192.168.33.0/24 out via 外側インターフェース名
        ${fwcmd} add allow ip from 192.168.40.0/24 to 内側IPアドレス in via 内側インターフェース名
        ${fwcmd} add allow ip from 192.168.40.0/24 to 192.168.40.255/32 in via 内側インターフェース名
        ${fwcmd} add allow ip from 192.168.40.0/24 to 192.168.33.0/24 in via 内側インターフェース名
        ${fwcmd} add allow ip from 内側IPアドレス to 192.168.40.0/24 out via 内側インターフェース名
        ${fwcmd} add allow ip from 192.168.33.0/24 to 192.168.40.0/24 out via 内側インターフェース名
        ${fwcmd} add allow tcp from any to 外側IPアドレス in via 外側インターフェース名
        ${fwcmd} add allow tcp from any to 192.168.40.0/24 in via 外側インターフェース名
        ${fwcmd} add allow tcp from 外側IPアドレス to any out via 外側インターフェース名
        ${fwcmd} add allow tcp from 192.168.40.0/24 to any out via 外側インターフェース名
        ${fwcmd} add allow tcp from 192.168.40.0/24 to any in via 内側インターフェース名
        ${fwcmd} add allow tcp from any to 192.168.40.0/24 out via 内側インターフェース名
        ${fwcmd} add allow udp from any 53 to 外側IPアドレス in via 外側インターフェース名
        ${fwcmd} add allow udp from any to 外側IPアドレス 53 in via 外側インターフェース名
        ${fwcmd} add allow udp from 外側IPアドレス to any 53 out via 外側インターフェース名
        ${fwcmd} add allow udp from 外側IPアドレス 53 to any out via 外側インターフェース名
        ${fwcmd} add allow icmp from any to any
        ${fwcmd} add deny log ip from any to any
    
  4. 再起動する
        # sync
        # reboot
    
  5. 確認
    以下のコマンドでIPFWのルールリストを見る
        # ipfw list
    

IPFWのルール変更

この形式での使用法は:
      ipfw [-N] コマンド [index] アクション [log] プロトコル アドレス [ オプション ]
-N コマンド index log アクション プロトコル アドレス
      from <address/mask>[port] to <address/mask>[port] [via <interface>]
port はポートをサポートする プロトコル (UDP と TCP) の 場合にだけ指定可能.
via は必須ではなく, 特定のインターフェースを通ってきたパケット だけにマッチするように, IP アドレスまたはローカル IP インターフェースの ドメイン名, またはインターフェース名 (例えば ed0) を 指定することができる.
<address/mask> の指定は:
      <address>
または
      <address>/mask-bits
または
      <address>:mask-pattern
IP アドレスのかわりに有効なホスト名を指定することも可能です. mask-bits はアドレスマスクで上位何ビットを1にするべきかを 示す十 進数値です. 例えば次の指定,
      192.216.222.1/24
はクラス C のサブネット (この場合 192.216.222) の任意のアドレスにマッチする マスクを作成する. mask-pattern は与えられたアド レスと 論理 AND される IP アドレスです. キーワード any は「任意の IP アドレス」を指定するために 使用することができる.

IPFW ルールリストの表示

この形式での使用法は:
      ipfw [-atN] list
この形式で使用する際に有効なフラグは三つあります: