2013年3月6日 星期三

Fedora 18 的「防火牆」設定(二):分享網路

無論是在家裏或辦公室,能夠自己支配使用的網路位址(IP address)總是有限,通常是買台「IP 分享器」以解決這個問題。一般「IP 分享器」的吞吐量(throughput)又多與價格成正比,若是附近有一台會長時間開機的電腦(如:伺服器、動物機等),再加一張網路卡,包含主機板上的共兩張網卡(一內、一外)就可以自製一台「IP 分享器」了。
    最近開始換裝 Fedora 18 系統,就用它內部新的「防火牆」設定功能,試著自己建立「IP 分享器」。除了多一張網路卡外,其它軟體都是已收錄在 Fedora 18 的套件資料庫,所以價格應該是滿有競爭力的。步驟如下:
  • 安裝 Fedora 18 系統:相較於之前的版本,整個設定簡單多了。
  • 設定「防火牆」:幾個「圖形化」的操作設定而己,應該沒什麼困難。
  • 設定內、外網卡:內部網卡有些不同,外部網卡和平常設定的差不多。
  • 安裝、設定 DHCP:這個有點小複雜,有範本可修改,也應該不難。

一、安裝 Fedora 18 系統

如果己經安裝好 Fedora 18,就跳過這個步驟。若需要安裝請參考 “適用 Fedora 18 的「可選版本 USB 安裝隨身碟」” 或製做光碟片安裝,這裏就不重覆。

二、設定「防火牆」

為節省篇幅,開啟「防火牆」設定程式,一直到權限認證通過這段操作,請參考前文 “Fedora 18 的 FirewallD 設定(一):開「通訊埠」”。
    這次的設定和前文不同,有兩個地方:『internal 區』和『external 區』,將分別用於內、外兩張網路卡。本次設定步驟中,幾個重點先說明一下:
Current View顯示目前「防火牆」編輯中的設定之時效長短。
『Runtime Configuration』為『暫時性』設定,
『Persistent Configuration』為『永久性』設定。
external對應「防火牆」外網路的『external(外部)區』。設定『分享網路』時,連接外部的網路卡要設定屬於『external 區』。此『區』的預設設定:『Services(服務)』開啟的「通訊埠」只有 ssh (22/tcp),此外『偽裝』欄的『Masquerade zone』也有勾選,其它皆為空白。
Masquerading
(偽裝)
是針對『網路位址轉換(NAT)』所設計,其它『區』的網路經此「閘道(gateway)」分享網路。
只有『external 區』的『Masquerade zone』要勾選,其它『區』的設定不需勾選此項。
internal對應「防火牆」內網路的『internal(內部)區』。『internal 區』預設開啟的「通訊埠」有 dhcpv6-client (546/udp), ipp-client (631/udp), mdns (5353/udp), samba-client (137/udp, 138/udp), ssh (22/tcp) 六個,其它皆為空白。

 設定『external 區』

首先來看『external 區』的設定
通常需要修改的設定只有『服務(Services)』這欄,若有要修改記得將『Current View』先調到『Persistent Configuration』,修改才會儲存下來,下次開機才會立即生效。

 設定『internal 區』

因為待會需啟用「DHCP 服務(service)』,先開啟它接收『需求』所用的「通訊埠(port)」67/udp
此外,『Services(服務)』那一欄中,不使用的「通訊埠」記得要關閉。

三、設定內、外網路卡

在整個設定中,較容易錯誤的地方就是:兩張網路卡與「防火牆」間的配對。有個小技巧:把網路線拔開,查看一下右上角的網路狀態;確定『網路線』與『網路卡設定』的對應後,將『網路卡設定』的名稱改為較容易辨認的名稱,如:WAN 和 LAN、Inside 和 Outside 等。

 拔除『內部網路卡』連線

以下是筆者將『內部網路卡』(即新加入的網路卡)的連線拔除後的結果,會有一個『纜線已拔除』的訊息,這時再點選『網路設定值』,開始設定網路卡。

 設定『連外網路卡』

在左欄有兩個裝置標示為『有線』,試著按它們會出現較詳細的狀態,
上圖是「網路已連線」那張網路卡,筆者將其設定為『連外網路卡』,點【選項】按鈕進入設定視窗。首先跳出的是『有線網路』欄,維持原來的設定。上方的『連線名稱』改為 WAN 方便之後的辨識用。
在『一般』欄,修改『防火牆地帶』為『external』。
在『IPv4 設定』欄,設定就是原來的網路設定,此例中是由 DHCP 指派 IP 位址。若是上班單位有給定固定 IP ,則依規定填入。
最後,在『IPv6 設定』欄,通常不使用 IPv6 所以將『方法』設為『忽略』,避免它嘗試索取位址,浪費寶貴的 CPU 資源。
至於『802.1x 防護』欄,預設是不啟用,所以不必理會。按【儲存】鈕,將剛才的設定儲存,會立即生效。

 設定『內部網路卡』

因內部網路卡需要提供 IP 位址分派及轉換的工作,自己的 IP 位址需要固定才行。所以,內部網路卡的設定上,稍微複雜些,請讀者設定時要有耐心,才不會出錯。
    在左欄點選另一個標示為『有線』的裝置,出現較詳細的狀態如下,
為節省篇幅,將各欄的修改與『連外網路卡』相似部分列表說明如下:
欄位修改用途
Current ViewRuntime Configuration
→Persistent Configuration
所修改的設定會被儲存,下次開機時自動生效
連線名稱em1 或 p?p1 → LAN方便辨認內、外網卡
一般防火牆地帶:
    預設 → internal
綁定防火牆的設定
IPv4 設定方法:自動 → 手動
地址:按【加入】加入設定
    地址  =192.168.51.8
    網路遮罩=255.255.255.0
    通訊閘 =192.168.51.8
DNS 伺服器:192.168.10.10
對內網路卡的設定

:DNS 伺服器的設定須與『連外網路卡』的設定相同,若是『連外網路卡』以 DHCP 自動取得 IP 地址,則須與自動設定值相同。
IPv6 設定方法:自動 → 忽略減少 CPU 浪費
除了上表的設定外,在『IPv4 設定』那一欄還有一個重要設定,
點選右下角的【路由】按鈕,跳出另一個設定視窗,
勾選『只在使用這個………』這項,使本機的網路資料不會試圖將『非內網的資料』送經此張網路卡。最後,要將『網路封包轉送』的功能開啟,可立即生效的命令有兩個,
[root@Core-i7 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@Core-i7 ~]# sysctl -w net.ipv4.ip_forward=1
以上兩個命令任選一個。
    要永久有效,就要將設定敘述加入開機程序中,其命令為
[root@Core-i7 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

四、安裝、設定 DHCP

要讓電腦扮演『分享網路』的角色,除了將內部網路的網路位址轉換成外部的網路位址(NAT)以外,還要分配內部網路位址給內網的電腦(DHCP)。需要安裝、設定 DHCP 伺服器,
[root@Core-i7 ~]# yum install dhcp
  . . . . . .
[root@Core-i7 ~]# gedit /etc/dhcp/dhcpd.conf
上例第一個命令是安裝,第二個命令是用圖型化介面的編輯器(gedit 文字編輯器)編輯設定檔,以上述說明為例,其設定檔內容的參考例如下:
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.10.0 netmask 255.255.255.0 {
}

# This declaration allows BOOTP clients to get dynamic
# addresses.
subnet 192.168.51.0 netmask 255.255.255.0 {
  range 192.168.51.100 192.168.51.200;
  option domain-name-servers 192.168.10.10;
  #option domain-name "internal.example.org";
  option routers 192.168.51.8;
  option broadcast-address 192.168.51.255;
  default-lease-time 600;
  max-lease-time 7200;
}

# Fixed IP addresses can also be specified for hosts.   These
# addresses should not also be listed as being available for
# dynamic assignment. Hosts for which fixed IP addresses have
# been specified can boot using BOOTP or DHCP.
host SiB_testfantasia {
  hardware ethernet 08:00:27:50:17:08;
  fixed-address 192.168.51.88;
}
第一段是(未修改前的)範例來源標示宣告。第二段用來告訴『DHCP 服務』本機連接的網路架構(指有連接,但不回應派送 IP 的需求)。第三段是設定分派的網路位址的範圍。最後一段則是設定給固定網路位址之用。一般讀者的設定,只要修改 192.129.10.0 及 192.129.10.10 這兩個『連外網路卡』的相關設定即可。
    最後要啟動 DHCP 伺服器測試設定,
[root@Core-i7 ~]# systemctl start   dhcpd.service
[root@Core-i7 ~]# systemctl status  dhcpd.service
[root@Core-i7 ~]# systemctl restart dhcpd.service
第一個命令是啟動 DHCP 伺服器,第二個命令是查詢狀態,如果有錯誤訊息,須回去修改 /etc/dhcp/dhcpd.conf 這個設定檔。接著再以第三個命令重新啟動 DHCP 伺服器。
    確定設定都正確,就可以命令 DHCP 伺服器在下次開機自動啟動,命令為
[root@Core-i7 ~]# systemctl enable dhcpd.service

已測試版本:

  • Fedora: 18

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)