網頁

2009年9月10日 星期四

pf.conf + pppoe 造成錯誤而無法載入 pf rule 的解法

如果遇到 PF + PPPOE 一起混著用的時候,又有 Lan connection ,有時候會開起來後 pf rule 完全沒被載入。這問題的起因就是,當 pf 先載入的時候 PPPOE client 還沒有把 daemon 跑起來,除了不知道 gateway 的 IP 外有可能連 Interface 都還沒出現。如果是 Interface 還沒出現的話,只要把該 interface (通常 pppoe 會是 tun0) 用括號包起來,像是:
ext_if_fttb="tun0"
nat on $ext_if_fttb inet from $internal_net to {!$internal_net,!$sparq_net} -> ($ext_if_fttb)

這樣 pf 就不會檢查 $ext_if_fttb 是不是存在,而如果有用到 PPPOE 的 gateway 的話則可以換成:
gw_if_fttb="(tun0:peer)"

這樣就不用每次重開完之後還要手動進去 pfctl -f /etc/pf.conf 了。