FreeBSD + OpenVPN + ipfw 做 NAT

前幾天一直研究怎麽透過 OpenVPN 連外,
最後發現還是需要 Firewall 來做 NAT,
廢話不多說,使用環境是 FreeBSD 10.1

因為 10 開始預設防火牆就是 ipfw 了,
所以直接啟用他來做解說

/etc/rc.conf

firewall_enable="YES"
firewall_type="OPEN"

這邊 firewall_typeOPEN 表示預設開放所有連線,其他選項可以參考 /etc/rc.firewall

接著執行

$ service ipfw start

剛開啟防火牆 SSH 可能會斷線,重連即可

接著設定 gateway 使系統可以作為 Gateway,
再一併設定 NAT 出口 (本例為網卡 em0)

/etc/rc.conf

gateway_enable="YES"
natd_enable="YES"
natd_interface="em0"

接著重啟防火牆及 routing 即可

$ service routing restart
$ service ipfw restart

網路上很多比較舊版本的 FreeBSD 教學可能會要你自己寫規則,
但是其實新版的 rc.firewall 已經支援直接從 rc.conf 讀取選項,
因此我們不需要真的手動寫規則,
最後再確定一下 forwarding 有沒有開啟。
(gateway_enable="YES",在 routing restart 時應該就會自己啟用了)

$ sysctl -a | grep forwarding
net.inet.ip.forwarding: 1
net.inet.ip.fastforwarding: 0
net.inet6.ip6.forwarding: 0

確定後即可順利透過 OpenVPN 出門囉~~
其實應該不限 OpenVPN 但是我就是用這個啊,筆記筆記一下而已XD
提醒自己不用寫規則www
(我自己有遇到 firewall_type="OPEN" 但是第一次啟動 ipfw 是全關的狀況,怕的人可以乾脆 reboot 試試看)

因主題更新,留言功能暫時停用中。