自架網站的 router 設定
在自架網站時,如果是用自己的電腦當主機,一般都會碰到 router 的設定問題,下面是我自己在架站過程中的一些心得。
1. 早期要架網站但卻沒有固定 IP 時,通常會去 Noip 去申請一個 DNS,當主機的 IP 有變動時,Noip 會自動更新 域名 所對應的 IP。如果預算許可,可以把浮動 IP 變更為固定 IP (在大部分狀況,是不需額外收費,只是浮動 IP 的數量會變少),另外再每年花個幾百塊去申請域名。當這些前置作業都完成後,還是常常會發生外面使用者連不進網類主機的狀況. 這種情形還是跟網路的環境有關。大致可分成下面兩種狀況:
1-1. 如果是租用中華電信的線路,那麼會裝配一個路由器 (router),其網內全部的電腦 IP 都是由此一路由器的 DHCH Server 分配,而主機 A 位於此路由器內,如下圖。那麼須連進入此路由器,一般來說,其帳號密碼分別為
帳號: user
密碼: cht 或 user (如果都不對,可以聯繫 ISP 服務人員確認)
接下來要判斷路由器的網址,下面為判斷基準
當主機 A 的 IP 為 192.168.0.100,那麼此路由器的網址為 192.168.0.1
當主機 A 的 IP 為 192.168.1.100,那麼此路由器的網址為 192.168.1.1,以此類推。
(或在 DOS command 下,輸入 ipconfig /all 的命令,預設閘道的 IP 就是此路由器的 IP)
以此例來說,連線的網址為:
https://192.168.1.1 (需注意的是,目前均改為 https,若用 http 會發生無法連到此網址)
在連進路由器後,需把外面的 port forward 到電腦主機 A。這裡的 port 所指的就是各種協定或應用程式所對應的埠號,舉例來說,http 所對應的是 80、https 是 443、MS SQL Server 是1433,MySQL是 3609。在這裡,因是要架網站,所以要用 http 跟 https,也就是 80 跟 443 。下圖即為要把連網請求 (http / https) 透過 CHT 路由器傳到主機 A 的示意圖。
此時有兩種做法,一種是把 CHT 路由器的 DMZ 設為主機 A 的 IP (192.168.1.100)。也就是讓主機 A 直接面對外網,這種做法比較不安全,因為這樣一來,主機 A 會直接面對外面各種攻擊的風險。
另一種做法是把 80 及 443 port 轉給主機 A,這也有兩種做法,有些路由器同時提供 Virtual Server與 Port Forward 兩種功能, 這兩種都可達到轉 port 的效果,而其中 Virtual Server 更可以變換內部的 port 號,這可提供更好的保護,下圖即是 D-Link 某一路由器在 Virtual Server 的實際設定畫面,其中 IP 位址就是對應主機 A 的 IP。
1-2 第二種的環境就會比較複雜一點,如下圖所示。之前我的環境就屬於這一種。
由圖中可以發現,除了中華電信 (CHT) 的路由器外,還另外裝了一個路由器。此時 http request 要連續通過兩個路由器,才能進入主機 A。其實際流程如下圖。
這種方式可以提供更好的保護,例如可以在內外 port 的轉換時做一些變化,讓外部部不容易猜到內部 port 的實際運作。不過此時兩台路由器都須作相對應的設定。這樣做的另一個用意是,如果 CHT路由器的功能太過陽春,可以把自用 (D-Link) 路由器的 IP 指派給 CHT路由器的 DMZ,這樣只要設定自用 路由器就好,未來如果有更換 ISP,第二層路由器下的網路設定就幾乎不用變動。
在做完路由器的設定後,主機 A 的防火牆也要一併打開對應的 port,不然 http / https 的 request 在中間就會被擋掉,造成網路伺服器無法對外的狀況。下一部分,將會針對 nginx 及 apache 這兩個網路伺服器的設定作介紹, 我目前是在 Windows 下跑 nginx,下面架設 3 個網站。這部分在剛開始時也花了一些時間去摸索,目前看來還算順利。