3 最後的準備工作

B在以新的核心開機前,必須修改一下 rc.bootrc.firewall。預設的防火牆規則是丟掉所有的封包,如果要覆蓋這個設定而成為開放的防火牆,可以修改 /etc/rc.conf。在 /etc/rc.conf 中加入下列幾行就可以驅動它:

    firewall_enable="YES"
    firewall_type="open"

還有一件必須要做的事,當在乙太網路上跑 IP 協定時,事實上使用二種乙太網路協定,一個是 IP,另一個是 ARP。ARP 協定是當機器要找出給定 IP 位址所對應的乙太網路位址時使用的。ARP 並不是 IP 層的一部份,只是給 IP 應用在乙太網路上運作。標準的開放式防火牆 ipfirewall 規則如下:

    pass ip from any to any

但ARP呢?如果 ARP 並未被 pass,根本不會有 IP 的交通,但 IPFIREWALL 並未提供非 IP 協定的處理。幸運的是,高手們的在 ipfirewall 程式碼中加入了對封包過濾橋接器的支援。如果你在 IP 位址 0.0.0.0 上建立一個特別的 UDP 規則,UDP 埠的號碼將被使用來搭配被橋接封包的乙太網路協定號碼,如此一來,你的橋接器就可以被設定成傳遞或拒絕非 IP 的協定。請在 /etc/rc.firewall 中接近文件頂端處理 lo0 的那三行之下(就是有寫 Only in rare cases do you want to change these rules 的地方)加入下面一行:

    ${fwcmd} add allow udp from 0.0.0.0 2054 to 0.0.0.0

這條規則以一般 IPFIREWALL 的觀點看來毫無意義,但橋接器的程式碼會不再限制而傳遞 ARP 的封包(你當然希望它這麼做)。

現在你可以將機器重新開機,和未設定前沒什麼兩樣,只是有一些和橋接有關的開機訊息,但橋接仍未運作。如果有任何問題,在繼續下去之前應該先找出來。

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.