提示
這篇文章是配合 開源且強大的軟路由系統 – pfSense 的延伸文章,請配合著一起看。
前言
在前面一篇文章我們設定完了 DHCP Server。但這個時候,我們的客戶端獲得的都是私人的 IP 位址,公網是沒辦法直接訪問的。所以如果我們的主機上有要對外開放的服務,又該怎麼做呢?
這時候,就要借助 Port Forward 了,也是你在大部分路由器上可以看到的功能。他可以讓路由器將被指定的 Port,指向內部主機。
環境簡介
我們先模擬一個場景:
假設我們的公網 IP 是 1.1.1.1。
而我們的私人網段是 10.0.1.0/24,路由器在 10.0.1.1 上且開啟了 DHCP 伺服器。
在這裡面有一台 Windows 主機獲得了 IP 位址 10.0.1.2,上面在 TCP 80 開啟了 Nginx。
現在的目標就是要讓外網訪問 1.1.1.1 的 TCP 80 時,能指向這台 Windows 主機上的 Nginx。
設定步驟
使用 pfSense 的網頁管理介面,前往 Firewall 的 NAT,你會隨即看到 Port Forward,我們點選 Add 新增規則。

首先 Interface 的部分,就是我們外網的介面卡,通常就是他預設的 WAN,我們保持不動。Protocol 的部分,因為我們是 Nginx,所以選擇 TCP 即可。而 Destination port range 則是設定我們要的 Port 80。

再來是下方轉發的目的地,目標 IP 就是那台 Windows 的 10.0.1.2,而內部 Port 也是設定 80,Description 則是註記而已;這樣就可以拉到下面 Save 了。

根據指示,點選 Apply Changes 完成配置。

接著,打開你的瀏覽器並輸入公網 IP 位址,就可以看到 Nginx 的歡迎頁面了。

同場加映:限制來源位址
上面的 Port Forward 範例沒有設定來源 IP 位址,也就是全世界都可以訪問,但是這麼做不一定是安全的。所以這邊要來講解,如何限制指定的網段才能訪問網站。
前往 Firewall 的 Aliases,我們現在要來建立一個 IP 的列表,點選 Import。( Add 的編輯模式很笨)

接著我們需要給他名稱、描述以及最下方的網段,可以用 CIDR 表示哦!完成後 Save 儲存就好。

接著回到 Firewall 的 NAT,我們編輯一下上面那個範例的規則,點選右邊的那支筆。

展開 Source 的選單,將 Type 選擇為 Single host or alias,後面的欄位則輸入剛剛規則的名稱,像我就是輸入 example1。

完成後頁面下拉點選 Save,並 Apply Changes。

現在,你的路由器只有在允許的網段訪問,才會提供網站或服務囉!