有關 m0n0wall 隨便記
解開 m0n0wall 磁碟
一直沒有好好的去把 m0n0wall 網站上的資料研究一番,玩過一陣子 FreeBSD source 中的 PicoBSD ,直覺地猜 m0n0wall 應該也是把核心、程式打包好再放到 FreeBSD 的分割區中,當把它 mout 起來一看,果然沒錯。
假設 m0n0wall 是放在第二顆硬碟中,透過以下的步驟可以一探究竟,甚或自行修改 m0n0wall:
在 m0n0wall WebGUI 設定開放外面連內部主機
我以開放 172.17.1.4 的 telnet (TCP port 23) 來說明,方法應該可以套用在任何服務的 ports
要開放外面的機器可以連到內部電腦的某個 port ,要處理兩部份:
- NAT : 將 m0n0 上的某個(些) ports 對應(map) 到內部主機的 ports
- Firewall : 設定完 NAT 的對應關係後,如果沒有開放也是枉然,所以要在防火牆規則上設定開放前述的 ports
假設我內部的電腦
- IP 為 172.17.1.4
- 要開放連線的 port 為 TCP 23
NAT 對應設定
- 進入防火牆管理的 "NAT 轉址"
- 點選 "Inbound" (也就是針對內部網卡的)
- 按 (+) 來新增規則
- 然後依下面的設定來讓防火牆上的 TCP port 23 對應到 172.17.1.4 的 TCP port 23
- Interface : WAN
- External address : Interface address
- Protocol : TCP (依自己需要設定)
- External port range : from 23 (依自己需要設定)
- NAT IP : 172.17.1.4 (依自己需要設定)
- Local port : 23 (開放 172.17.1.4 的 port 23)
- Description : 說明,可輸可不輸,例如:防火牆 TCP 23 → 172.17.1.4 TCP 23
- 勾選 "Auto-add a firewall rule to permit traffic through this NAT rule",這個選項如果勾選了,m0n0 會自動幫我們在防火牆規則中新一條放行的規則並套用,如果在儲存時沒選,只好自己按後面 2 的部份來手動新增囉!
都設定好了就按 "Save" 鈕儲存規則
回到規則清單後,按 "Apply changes" 就可以套用剛剛設好的規則
Firewall 規則設定
- 進入防火牆管理的 "規則設定"
- 點選 "WAN"
- 按 (+) 來新增規則
- 然後依下面的設定來開放 172.17.1.4 TCP port 23
- Action : Pass
- Disabled : 不選
- Interface : WAN
- Protocol : TCP (如果要開放的是 UDP ,記得要換)
- ICMP type : 不選
- Source : Any
- Source port range : 不輸入 (代表 any 的意思)
- ------以上都是預設值,下面的是重頭戲
- Destination :
- Type 選 "Single host or alias"
- Address 輸入要開放連線的 IP 172.17.1.4
- Destination port range :
from 輸入 23 (依自己需求設定,如果只開放單一 port ,to 就保持空白)
- Fragments : 不選
- Log : 不選
- Description : 說明,可自行輸入或不輸入,例如:開放大雄 FreeBSD 的 Telnet
都設定好了就按 "Save" 鈕儲存規則
回到規則清單後,按 "Apply changes" 就可以套用剛剛設好的規則
雜記
下面是一些東西先記下:
- m0n0wall 的管理程式是用 PHP 寫的,它是以 CGI 的方式呼叫的,所以,必須在檔案的開頭第一行放下面這行
- #!/usr/local/bin/php
- 另外,為了讓 PHP 程式可以跑,檔案的權限必須是 755 (讓它具有 x 的權限才可以執行),不然,會發生 500 的錯誤訊息。
- 管理程式的一些檔案
- fbegin.inc : 管理程式網頁的檔頭及選單的輸出。如果將管理程式中文化(Big5),這個檔案中的 charset 就要記得改為 big5 ,才不會讓使用者一直要自己更改網頁瀏覽器的編碼方式。
- fend.inc : 網頁的檔尾
- m0n0wall 中有個 exec.php 的程式可以執行指令,並輸出指令執行的結果在畫面上,它也提供下載和上傳檔案的功能,在測試階段可以用這種方式來立即測試修改的結果。不過,因為這此修改過的東西並不真正的儲存在磁碟機中,而是存在記憶體裡,所以重新開機後就會消失而需重來,真的要永久儲存就要參考前面解開 mfsroot.gz 的方法。另外,exec.php 執行時的路徑是 /usr/local/www ,不相信,執行 ls 和 ls -la / 看各是什麼結果 。如果使用 Upload 的功能,檔會上傳後會暫存在 /tmp 中,放到 /usr/local/www 中才可以用 web URL 來存取並執行。
|