[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一頁 ]
這一章的重點在 Debian 的網路管理。請閱讀Net-HOWTO
了解一般
GNU/Linux 的網路設定。
為了讓 Debian 的主機能夠成功連上網路,必須先設定好網路卡。
首重就是要確認核心支援的裝置,例如乙太網路卡,無線網路卡和數據機。您可能需要重新編譯核心並加入驅動程式模組Debian下的Linux核心, 第 7 章來支援這些硬體。
以下說明如何設定網路裝置。這一章的內容主要是針對 Debian Sarge。大部分的內容不一定能相容早期的版本。
一台 Debian主機會有多個 IP 位置。其硬體裝置有許多種,比如:
Loopback: lo
Ethernet: eth0, eth1, ...
Wi-Fi: wlan0, wlan1, wifi0, ... [51]
Token Ring: tr0, tr1, ...
PPP: ppp0, ppp1, ...
還有其他不同的網路裝置,包含 SLIP、PLIP(串列和並列 IP)、控制網路流量的"shaper"裝置、frame 傳送、AX.25、X.25、ARCnet 以及 LocalTalk。
每一個連線到網路的裝置(或任何 IP 基礎的網路)將以唯一一個 32 bit 的 IP 位置來辨識。 [52] IP 位置可以分成網域位置和主機位置兩部份。將您的 IP 位置的網域位元全部設成1,而主機位元全部設成0,則您會得到該網路遮罩。
以傳統上來說,IP 網路分成 8、16、24 bits 長度的三個組別。 [53]
IP addresses net mask length Class A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 Class B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 Class C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24
IP 位置不在這個範圍之內的是用在特殊環境上。
每一個類別的位置都給保留給本地網路(LANs)。這些位置保證不會影響到網路上的IP位置。(同理,如果主機被分配到這些地址的話,則該主機就無法直接存取網路,除非透過支援 proxy或是 Network Address Translation(NAT)功能才能夠連上網路。)底下的表格列出每個類別的 IP 位置:
network addresses length how many Class A 10.x.x.x /8 1 Class B 172.16.x.x - 172.31.x.x /16 16 Class C 192.168.0.x - 192.168.255.x /24 256
IP 網路的第一個位置就是該網路本身,最後一個位置是這個網路的廣播位置。 [54] 其餘的的 IP 位置就可以分配給其他該網域上的主機。通常IP位置的第一個與最後一個是用來當作網路通訊閘。
路由表記載了核心如何傳送 IP 封包到目的端。底下說明一台位於本地端網路(LAN) IP 位置為 192.168.50.x/24 的 Debian 主機的路由表。另一台 192.168.50.1(也在 LAN 裡面) 的主機是 172.20.x.x/16 共用網路的路由器以及 192.168.50.254(也在 LAN 裡面)負責網際網路的路由器。
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 * 255.0.0.0 U 0 0 2 lo 192.168.50.0 * 255.255.255.0 U 0 0 137 eth0 172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0 default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
第一行說明傳遞的目的位置如果是 127.x.x.x,則會透過 lo(loopback)裝置路由。
第二行說明傳遞的目的位置如果是 LAN,則會透過 eth0 裝置路由。
第三行說明傳遞的目的位置如果是共用網路,則會透過 eth0 裝置路由,最後傳送到 192.168.50.1 通訊閘。
第四行說明傳遞的目的位置如果是網際網路,則會透過 eth0 裝置路由,最後傳送到 192.168.50.254 通訊閘。
路由表的 IP 位置也以名稱表示,這些名稱由/etc/networks
或 resolver
C函式來取得。
除了路由支外,核心也能實現 network address translation(NAT)、流量控制以及封包過濾。
請閱讀 Net-HOWTO
以及
other
networking HOWTOs
了解背後的運作原理。
傳統的 GNU/Linux 系統設定網路的工具是 ifconfig
and
route
,這兩個程式可以從 net-tools
套件取得。目前有新的工具:ip
可以取代這兩個程式的功能,您可以從
iproute
套件取得。ip
程式需搭配 Linux 2.2
或更新的核心且比舊有的程式功能更強。即使如此,這些傳統的設定工具還是相當實用且大家也比較熟悉。
ifconfig
和 route
以下的說明示範如何改變eth0的 IP 從 192.168.0.3 到
192.168.0.111 以及透過192.168.0.1 路由到
10.0.0.0 這個網域。 執行 ifconfig
和
route
時不加入網路裝置會顯示目前的網路裝置和路由表狀態。
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
首先,我們先關閉 eth0。
# ifconfig eth0 inet down # ifconfig lo Link encap:Local Loopback ... (no more eth0 entry) # route ... (no more routing table entries)
接下來我們啟動 eth0 並給予新 IP 位置和路由。
# ifconfig eth0 inet up 192.168.0.111 \ netmask 255.255.255.0 broadcast 192.168.0.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
結果是:
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
請參閱 ifconfig(8)
和 route(8)
取得更多資訊。
ip
ip
與 ifconfig
和 route
有同樣功能的指令如下:
ip link show
ip route list
ip link set eth0 down
ip addr del dev eth0 local 192.168.0.3
ip addr add dev eth0 local 192.168.0.111/24 broadcast 192.168.0.255
ip link set eth0 up
ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
執行 ip
指令時加入 help 參數會顯示指令的用法。
例如,ip link help 代表:
Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ]
請參閱 ip(8)
。
想要設定 Wi-Fi 裝置,除了ifconfig
或
ip
之外,您還需要安裝wireless-tools
並使用內附的iwconfig
程式。
請參閱 iwconfig(8)
。
如果您透過 modem 來撥接上網的話,這樣的連線被稱為 Point-to-Point (PPP) 協定。 這樣連線作業的網路裝置為 ppp0, ppp1 等等。
一個 PPP 裝置是由 pppd
這個 PPP 服務所管理,您可以在
ppp
套件中找到該程式。 因此,設定 PPP 裝置也就是設定
pppd
的意思。
pppd
一個網路連線的建立需要完成以下一連串的手續:開啟通訊埠(通常是串列埠),透過通訊裝置送出指令(通常是數據機),撥出電話號碼,發送端的身分必須給外界的
PPP 服務認證,由核心建立 PPP
裝置並設定路由表,使得資料可以透過該線路傳遞。pppd
能完成以上所有的動作,所以會有一堆設定參數。關於參數的說明請參閱
pppd(8)
。
在Debian系統中,全域選項是設定在/etc/ppp/options
。使用者格式選項是設定在~/.ppprc
。必需依賴通訊埠來使用的選項放置在/etc/ppp/options.portname
。舉例來說,假設你有兩台數據機
—一固定式的 Lucent LT modem 從/dev/LT-modem來存取資料和一外部的 modem
從/dev/ttyS0來存取資料。建立下列這兩個選項檔案。
# cat > /etc/ppp/options.LT-modem <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem" EOF # cat > /etc/ppp/options.ttyS0 <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0" EOF
這些涉及到下列多人線上交談系統的指令碼。首先,/etc/chatscripts/setup-LT-modem
.
ABORT ERROR '' ATZ OK 'ATW2X2 S7=70 S11=55' OK AT
第二,/etc/chatscripts/setup-ttyS0
.
ABORT ERROR '' ATZ OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0' OK AT
當然,這一些檔案的內容必需依賴你的硬體。
選項也可以跟參數一樣傳遞給 pppd
。
在Debian pppd
通常使用pon
此命令來啟動。當
pon
被它的第一個參數名字來使用時,在 /etc/ppp/peers/
的一個選項檔案也同時被pppd
讀取。 [55]
該檔是您針對特定的網點服務所設定的地方,舉例來說,一個特定的網路服務提供者(ISP).
假設,舉例來說你從Amsterdam和Den Haag之間來溝通。在每一個城市你使用了兩個 ISP services—Planet 和 KPN.首先對每一個ISP建立一個基本的設定檔案。
# cat > /etc/ppp/peers/KPN <<EOF remotename KPN noauth user kpn noipdefault ipparam KPN EOF # cat > /etc/ppp/peers/Planet <<EOF remotename Planet auth user user3579@planet.nl noipdefault mru 1000 mtu 1000 ipparam Planet EOF
這一些檔案從兩個不同的ISP來設定選項。對這兩個ISP來說常見的選項可以被放置在/etc/ppp/options
或當一種特殊介面的選項檔案被佔用時。
現在對每一個城市的ISP建立選項文件。在我們的例子中連結到不同地區ISP的差別只在於對話script是否需要。(對話script的不同,因為區域接收資料的電話號碼是不同的。)
# cat > /etc/ppp/peers/KPN-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/KPN-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam" file /etc/ppp/peers/Planet EOF # cat > /etc/ppp/peers/Planet-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag" file /etc/ppp/peers/Planet EOF
file 指令顯示之前各包含了一個選項檔案。connect
指令詳細地說明了用來建立連線的pppd
命令。通常使用這一個
chat
程式來做,使對話script來適應ISP。這裡是給Den
Haag的對話script;和給Amsterdam的對話script除了電話號碼以外可能極為相似或者當ISP從一個公司到另外一個公司所提供的服務有可能是不同的。
# cat > /etc/chatscripts/KPN-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676012321 CONNECT \d\c EOF # cat > /etc/chatscripts/Planet-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676002505 CONNECT \d\c EOF
為了能連接上這些 ISP,你需要的用戶名稱和密碼在被要求時以便讓 pppd
可以提供資料。這一資訊不是被儲存在/etc/ppp/pap-secrets
(假使 PAP
規則使用中) 就是在 /etc/ppp/chap-secrets
(假使 CHAP
規則使用中)。雖然 CHAP 是相當安全的, PAP
依然是相當廣泛地被使用。因為這一些檔案包含了"secret",所以群組和其他用戶並不被允許讀取或是寫入。這些檔案的格式請參閱pppd(8)
的說明。"secret"(第三格)是由用戶端名稱(第一格)和/或伺服器名稱(第二格)來搜尋。當連線到一個ISP時通常是不知道那一個伺服器的名稱,所以提供一個用戶端名稱來取代;這在
peers/KPN
和 peers/Planet
檔案中的 user
行就能完成。
# client name server name secret kpn * kpn user3579@planet.nl * myfavoritepet
See /usr/share/doc/ppp/README.Debian.gz
for more information.
pppconfig
來設定 pppd
一個快速的方法來設定 pppd
是使用pppconfig
這一個用相同名稱的套件。pppconfig
會透過選單介面來詢問用戶問題,之後設定檔案的方式就如同上述。
wvdial
來設定 PPP 裝置介面
另一個使用 pppd
不同的方式是從wvdial
來執行它,wvdial
包裝在 wvdial
套件裡。取代了
pppd
用 chat
來撥接和協調連線的動作,wvdial
完成了撥接和初始協調的動作,剩下的就交給pppd
。只要給予電話號碼,使用者名稱和密碼,wvdial
大部份都能成功地完成連線動作。
hostname-系統主機名稱是由核心所維護的。初始的script
/etc/init.d/hostname.sh
會在開機時設定系統主機名稱(使用
hostname
這個命令),名稱儲存在
/etc/hostname
。這個檔案應該 只
包含系統主機名稱,而不是一個FQDN。
執行 hostname
(不帶任何參數)來顯示目前的主機名稱。
一個主機的郵件名稱是郵件相關的程式用來確認主機的。
/etc/mailname
包含了該名稱並以新空行結尾。郵件名稱通常是一個可解折主機IP位置的FQDN。參閱
mailname(5)
。
電郵的收件者發現郵件標頭的 From: 時,它的值是依據您的 Debian 主機的郵件用戶代理(MUA)和郵件傳送代理(MTA)的設定。假設一本地端用戶 foo 從郵件名稱為 myhost.dom 的主機傳送郵件時。送出的電郵標頭 From: 會變成:
"From: foo@myhost.dom" if the MUA has no From: header set;
"From: bar@myhost.dom" if the MUA has "From: bar" set;
"From: bar@bogus.dom" if the MUA has "From: bar@bogus.dom" set.
就算 MUA 有 From: 標頭,MTA 還是會加入 "Sender:foo@herman.dom" 標頭來指定真實的來源。
當然,任何複雜的 MTA 在執行位址重寫時,如同 在 Exim 下設定不存在的電郵位址的垃圾桶, 第 9.6.1.3 節 和 在 Exim 下設定寄出郵件的位址重寫, 第 9.6.1.4 節 的討論,收件者顯示的郵件地址可以任意更改。
主機由網域名稱和IP地址所查詢。DNS用途是把網域名稱和IP位址以及主機的其他特性聯繫起來的一個客服端-伺服器系統。GNU
C Library resolver(3)
也可從檔案中查詢IP位址或查閱 Network
Information Services (NIS)。
有些軟體(像是GNOME)希望系統主機名稱是一個可解折IP位置的FQDN。然而,這並不洽當,因為系統主機名稱和網域名稱兩者是截然不同的。為了支援這樣的軟體,必須確定系統主機名稱是可被解折的。常見的解法是加入系統主機名稱和IP位置的敘述到/etc/hosts
。如果您的系統有固定IP,就使用那一組IP位置,否組請用127.0.1.1這個IP位置。
127.0.0.1 localhost 127.0.1.1 uranus
執行hostname --fqdn來檢查您的FQDN是解折成那一個IP位置。
查明IP位址和一特殊網域名稱的聯繫就是 resolver 的工作。大部份常用的 resolver 是
GNU C Library 中的 resolver
所提供的功能(resolver(3)
)。另一個是由libfiredns
套件所提供的
FireDNS resolver。除了這兩個外,還有其它同功能的套件喔。
GNU LIBC 的 resolver 如何控制 /etc/nsswitch.conf
設定檔中含有
hosts 那一行來解決名稱查詢呢?該行列出查詢名稱的服務:例如
dns, files, nis, nisplus。
參閱 nsswitch.conf(5)
。在使用 files
的情況下,resolver 也是由 /etc/hosts
設定檔控制。參閱
hosts(5)
。
上述的檔案是固定的且可用您喜愛的編輯器修改。
在使用 dns 的情況下,resolver 也是由 /etc/resolv.conf
設定檔控制。參閱 resolv.conf(5)
。resolv.conf
其中一項重要功能是列出名稱服務器的 IP
位址以便查詢名稱。該列表必須依賴網路環境,然而在您的電腦運行中,網路環境時隨時變動的。pppd
和 dhclient
等程式用來加入或移除resolv.conf
中的資料,但這些功能並不一定能正常運作且兩者互斥。resolvconf
套件採用更好的方式來解決了這個問題,並提供一個標準框架來更新
resolv.conf
。參閱管理名稱伺服器的資訊
– resolvconf
, 第 10.4.2 節。
resolvconf
resolvconf
提供一個框架來動態管理可使用的名稱伺服器資訊。它解決了長久以來維護
resolver 和 DNS 快取使用的動態名稱伺服器的列表問題。Resolvconf
扮演著各個控制網路裝置介面,提供名稱伺服器資訊的程式或需要名稱伺服器資訊的軟體的媒介。
resolvconf
被設計成無須任何手動設定就能工作。但該套件還相當新,可能需要部份的手動調整才能正常工作。如果您曾改造過套件使它會更新/etc/resolv.conf
的話,您將需要取消修改的部份。更多訊息請參閱
/usr/share/doc/resolvconf/README.gz
。
nscd
, dnsmasq
, pdnsd
, bind9
如果你的名稱伺服器反應緩慢你可能想要使用nscd
來快取使用libc6
resolver 所查詢的結果。
如果你想要在你的區域網路快取其他主機名稱,你可能要執行一個快取前置名稱伺服器,就像
dnsmasq
或 pdnsd
。
如果你希望也可以使用 bind9
套件的
named
程式當一個快取前置名稱伺服器。雖然這是一個重量級的程式,除非你需要他先進的功能,否則你使用先前提及的套件是比較好的。
所有這些的套件皆與 resolvconf
運作良好。
bind
如果你需要提供可靠的名稱服務給一個網域,你需要一個完全成熟的名稱伺服器,例如套件
bind9
中的 named
。
如果你安裝 bind9
你也應該安裝 dnsutils
.
你可能也需要安裝這一些公用的套件: bind9-host
;
dns-browse
; dnscvsutil
; nslint
.
你可能也需要安裝這個使用說明套件: bind9-doc
.
你可能也需要安裝這一些開發套件: libbind-dev
;
libnet-dns-perl
. 如果你安裝界面是使用 DHCP
你可能找到這一有用的套件: dhcp-dns
.
安裝 bind9
或 dpkg-reconfigure
它來作基本的設定。設定包含編輯 named.conf
。在 Debian 裡,該檔案在
/etc/bind/
找到且主要被使用來定義基本的 DNS
區域;它包含了兩個其他文件:named.conf.local
,用來定義區域地區,和named.conf.options
,用來設定選項。(後者是靠著
resolvconf
來產生 /var/run/bind/named.options
,除了
forwarders
說明是目前可得到的非區域的名稱伺服器的目錄之外,其餘的都是和原來的相同。要利用這功能,改變named.conf
中的 include 這一行,使得它包含了
/var/run/bind/named.options
。參閱 管理名稱伺服器的資訊 – resolvconf
,
第 10.4.2 節。)
在 named.conf*
目錄下的沒有全部路徑名稱的資料庫檔案會被儲存在
/var/cache/bind/
。這是最合適儲存由named
產生檔案的位置:舉例來說,zone 的資料庫檔案為第一,而
daemon為第二。在named.conf
的資料必須依靠完整路徑才能找到/etc/bind/
目錄下的固定資料庫檔案。詳細訊息請參閱
/usr/share/doc/bind9/README.Debian.gz
。
低階的網路安裝界面靠著 Dynamic Host Configuration Protocol (DHCP)可以被自動安裝。你的防火牆或路由器或寬頻的 ISP 可能用此方法來配置IP位址和其他參數。
要做到這項工作你必順安裝下列的套件之一:
dhcp3-client
(version 3, Internet Software Consortium)
dhcpcd
(Yoichi Hariguchi and Sergei Viznyuk)
pump
(Red Hat)
pump
是一套簡單且廣泛使用的套件。 dhcp3-client
是複雜的但常安裝的。 [56]
ifupdown
為了要使網路安裝更加容易,Debian 提供了一個標準的高階網路工具由
ifup
和and ifdown
程式和/etc/network/interfaces
檔案所組成。 [57] 如果你選擇去使用
ifupdown
來做你的網路設定,那麼你應該不使用低階的命令。
這也表示你不應該使用其它高階結構工具,例如會呼叫低階結構工具的whereami
,
divine
, intuitively
等等。 這 ifupdown
程式被設計的目地是要被獨立地使用來安裝和反安裝網路界面。
要更新介面設定請執行:
# ifdown eth0 # editor /etc/network/interfaces # 依您的需要調整 # ifup eth0
更多資訊請參閱 interfaces(5)
, /usr/share/doc/ifupdown/examples/network-interfaces.gz
和ifup(8)
。
假設你要安裝一乙太網路界面以致它有一固定的 192.168.0.111
IP位址。這位址從 192.168.0 開始,所以它一定在 LAN
上。更深一步地假設, 192.168.0.1 是 LAN
連上網際網路的通訊閘位址。編輯 /etc/network/interfaces
以致於它包含了像這樣的資料:
iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1
你可以設定介面的其他部份或是執行其他動作,在界面被帶起之後或在它被帶下之前,靠著是 "up" 和 "down" 那一行適當的命令說明。
iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE down route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE up echo Interface $IFACE going up | /usr/bin/logger -t ifup down echo Interface $IFACE Going down | /usr/bin/logger -t ifdown
二者擇一地,命令可以在 /etc/network/if-up.d
和
/etc/network/if-down.d
資料夾被插入在scripts之內。這樣的 scripts
也可以執行延伸的選項。參閱 interfaces(5)
來了解細節。舉例來說,resolvconf
套件納入的 script
在界面帶起時允許你增加選項來說明被包含在 /etc/resolv.conf
的DNS資訊:
iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1 dns-search somedomain.org dns-nameservers 195.238.2.21 195.238.2.22
在 dns-search 的 somedomain.org 參數選項符合在
resolv.conf(5)
的 search 參數選項。 在
dns-nameservers 的 195.238.2.21 和
195.238.2.22 參數選項符合這 nameserver 參數選項。
其他識別的選項是 dns-domain 和 dns-sortlist。參閱 管理名稱伺服器的資訊 – resolvconf
,
第 10.4.2 節。
使用DHCP來安裝一個界面裝置介面,請編輯
/etc/network/interfaces
,包含了像這樣的敘述:
iface eth0 inet dhcp
為了要使這功能運作你必須安裝一個在 安裝網路界面使用 DHCP, 第 10.5 節 所提及的DHCP用戶端程式。
wireless-tools
這個套件包含了一個 hook script
/etc/network/if-pre-up.d/wireless-tools
使得界面被帶起之前順利安裝
Wi-Fi (802.11a/b/g) 硬體變成可能。 使用 iwconfig
這一程式來完成設定;參閱 iwconfig(8)
。 對 iwconfig
的每一可能命令參數,您可以在 /etc/network/interfaces
包含一個選項,像是 "wireless-" 前綴參數一樣來命名。舉例來說,在使用
DHCP 帶起 eth0 之前,設定 eth0 的 ESSID
到myessid 和加密金鑰到 123456789e
,編輯/etc/network/interfaces
以致於它包含了像這樣的敘述:
iface eth0 inet dhcp wireless-essid myessid wireless-key 123456789e
注意!如果你執行 waproamd
來設定這裝置介面,你不應該使用這個方法來設定 ESSID 和金鑰。在 ifup
執行時,waproamd
已經設定了 ESSID 和金鑰。參閱 觸發網路設定 – 使用 waproamd
, 第
10.8.4 節 。
ifup
和 ifdown
程式使用 pon
和
poff
來增加和移除 PPP 界面,所以首先閱讀 設定
PPP 裝置, 第 10.2.4 節 。
假設你已經設定了 PPP 和 myisp 一起運作。編輯
/etc/network/interfaces
以致於它包含了像這樣的敘述:
iface ppp0 inet ppp provider myisp
如同這樣的敘述,ifup ppp0
會完成
pon myisp
遺憾的是目前無法提供額外的 pppd
選項到
/etc/network/interfaces
中的 ppp 敘述。 [58]
目前使用 ifupdown
來執行 PPP 界面的輔助設定是不可能的。因為
pon
在 pppd
完成連結之前就存在了,在 PPP
界面準備使用之前,ifup
會預先執行 up scripts。
直到這個 bug [59]
被修正前,還是要額外設定 /etc/ppp/ip-up
或
/etc/ppp/ip-up.d/
。
許多寬頻網路供應商 (ISPs) 使用 PPP 協調連線,即使用者的機器透過 Ethernet 和/或
ATM 網路來連接他們。完成這樣的功能需依靠封裝乙太網路的 frame 的 PPP
串流技術,也就是 PPP over Ethernet (PPPoE)。 假設你的 ISP 是叫做
myisp。首先對 myisp 設定 PPP 和
PPPoE。最容易做到這的方法是從主控台安裝 pppoeconf
套件且執行
pppoeconf
。然後編輯 /etc/network/interfaces
以致於它包含了像這樣的敘述:
iface eth0 inet ppp provider myisp
有時候最大傳輸單位 Maximum Transmit Unit (MTU) 決定於 Digital Subscriber Line
(DSL) 之上的 PPPoE。參閱 DSL-HOWTO
來了解細節。
注意!如果你的寬頻數據機包含路由器功能,那麼數據機/路由器本身處理 PPPoE 連線並當作一條簡單的乙太網路通訊閘連向網際網路的路徑出現在 LAN 周邊。
假設 eth0
用一個 DHCP-configured IP 位址連接到網際網路且
eth1
用一個固定的 IP 位址 192.168.1.1 連接到 LAN
。編輯 /etc/network/interfaces
以致於它包含了像這樣的敘述:
iface eth0 inet dhcp iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
如果你如 建立通訊閘路由器, 第 10.12 節 所描述的去啟動在主機上的 NAT,那麼你可以分享網際網路連接在 LAN 上的所有主機。
使用虛擬裝置介面,你可以安裝一張乙太網路卡去成為好幾個 IP
子網面的介面。舉例來說,假設你的主機是在 LAN 網路上
192.168.0.x/24。你想要讓主機連線到網際網路,並用原本的網路卡透過 DHCP
機制取得真實 IP 位址。編輯 /etc/network/interfaces
以致於它包含了像這一些敘述:
iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 iface eth0:0 inet dhcp
這 eth0:0 界面是一個虛擬的界面。當它被帶起時,它的根源就是 eth0。
ifupdow
邏輯裝置定義對讀者而言,了解下列文章中的physical interface 和 logical interface 之間的差異是很重要的。 [60] 一個 physical 裝置界面是我們稱呼為 "裝置界面",核心命名為 eth0, eth1, ppp0 ,諸如此類的。一 logical 裝置界面是一套可以指定 physical 裝置界面的可變參數值。 當妳在閱讀的同時,如果發現有困惑,用這個述敘 "configured with interface profile X" 來取代 "configured as logical interface X"。
那些定義在
/etc/network/interfaces
的iface,實際上是定義邏輯裝置界面而不是
physical 裝置界面。 [61]
如果你從不想要去重安裝你的界面,那麼你可以忽略這個細節,因為 physical 裝置介面
foo 預設會被設定成邏輯裝置介面 foo。
然而,假設你的電腦是你在家裡和工作之間運輸的筆記型電腦。當你的電腦連線到公司的網路或是到你的家用 LAN 時,相應地你需要設定 eth0。
首先定義兩個邏輯裝置界面 home 和 work(取代 eth0,就像我們先前做的),針對家用網路和公司網路各別地設定裝置介面。
iface home inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 iface work inet static address 81.201.3.123 netmask 255.255.0.0 gateway 81.201.1.1
透過適當的設定後,只要在命令列上指定後,physical 裝置界面 eth0 就能在家庭網路上被帶起:
# ifup eth0=home
針對公司網路重新設定 eth0 只要執行這些命令:
# ifdown eth0 # ifup eth0=work
注意,如果interfaces
設定檔內容如上面寫所的,即使單獨執行
ifup eth0 也不會帶起 eth0。
這理由是因為,ifup
使用 physical
裝置界面名稱來當作預設的邏輯裝置介面名稱,然而我們的例子中沒有定義
eth0 這個邏輯裝置介面。
裝置介面名稱可以在執行 ifup
時對應成其他名稱。至於對應成什麼名稱則是依照情況判定。因此ifup
能設定在帶起實體裝置介面時能對應成多個預定義的邏輯裝置。
邏輯裝置介面名稱發生對應的情況如下:
如果執行ifup
時沒指定邏輯裝置介面,則實體裝置介面名稱為初始的邏輯裝置介面。
如果邏輯裝置介面符合 mapping 敘述的 glob-pattern,則對應到新產生的邏輯裝置介面。這些動作在順序的 mapping 敘述就已經完成了。
如果最終的的邏輯裝置介面名稱是/etc/network/interfaces
檔案中的一個邏輯裝置介面定義的標誌,則實體裝置介面被帶起成邏輯裝置介面。不然
ifup
會印出 "Ignoring unknown interface" 的訊息並離開。
mapping 敘述的文法是:
mapping glob-pattern script script-name [map script input]
mapping 敘述命名的 script 會加入 physical 裝置介面為參數執行,而剩下的敘述中的 "map"(不包含 "map" 字串) 行的內容會導入到它的標準輸入。該 script 在離開前會印出對應到他的標準輸出的結果。
舉例來說,底下的 mapping 敘述會促使 ifup
帶起
eth0 裝置介面並當成 home 邏輯裝置介面。
mapping eth0 script /usr/local/sbin/echo-home
/usr/local/sbin/echo-home
的內容是:
#!/bin/sh echo home
因為對使用 script 完成對應,所以自動選擇邏輯裝置介面是可能的 — 基於幾個測試的結果。參閱 使用 guessnet 選擇邏輯裝置介面, 第 10.6.3.1 節 中的範例。
安裝 guessnet
套件並加入以下的敘述到
/etc/network/interfaces
:
mapping eth0 script guessnet-ifupdown map home map work
現在起,當妳執行 ifup eth0
時, guessnet
會檢查
eth0 是否被帶起成 home 或
work。它使用儲存在邏輯裝置介面的定義來完成檢查的動作。
laptop-net
自動設定網路
laptop-net
套件使用不同的方法來自動設定網路。Laptop-net 不採用
ifupdown
的邏輯裝置反而改用它內建的系統設定 的 "方案"
以及系統 "偏好"。但是,Laptop-net 仍然使用 ifup
和
ifdown
來設定硬體裝置。安裝 laptop-net-doc
套件來閱讀詳盡說明的文件。
network-manager
自動設定網路
network-manager
是由Fedora開發者所發明的並包裝到Ubuntu上。它未來可能會納入Debian中,而同時也表示ifupdown及其它軟體就廢棄不用了。
eth0, eth1 等裝置名稱是由核心指定的,而核心建立裝置的順序是依照這些名稱。在開機時偵測到介面卡後,通常是以同樣的順序來偵測,所以指定的裝置名稱也是依照同樣的順序,然而,該規則無法套用在可熱插拔的裝置上。在不同的情況下,這些裝置被偵測到後,核心可以用任何順序或規則來指定裝置節點。
因為這樣的關係,系統上使用可熱插拔的網路卡將不會採用
/etc/network/interfaces
定義好的邏輯裝置,如 eth0,
eth1
等預設的裝置對映。取而代之的是您必須針對這邏輯裝置給定一個別的名稱並使用下列兩者其一的方式來控制那一個介面卡指定成那一個邏輯裝置。
<<<<<<< gateway.sgml
這個問題只要使用目前的udev
套件版本和設定就能解決了。
>>>>>> 1.16 使用 nameif
工具(在
net-tools
套件中)或更具彈性的 ifrename
工具(在
ifrename
套件中)使得核心依照介面卡的屬性來指定裝置名稱。採用這種命名規則的話,介面卡就能推測是使用那一個實體裝置名稱。
另一個辦法是採用 ifup
的對應技術使得介面卡在被帶起時能依據部份屬性來找到對應的邏輯裝置介面。
假設,舉例說明,您有兩個不同的網路卡,對應的網路分別為 net1 和
net2。/usr/share/doc/ifupdown/examples/
目錄下包含了對應 script,依照 Media Access Controller address (MAC 位址)
來選擇介面卡的邏輯裝置介面。先安裝該 script 到適當的目錄。
# install -m770 /usr/share/doc/ifupdown/examples/get-mac-address.sh \ /usr/local/sbin/
然後增加類似下列的敘述到 /etc/network/interfaces
:
mapping eth0 script /usr/local/sbin/get-mac-address.sh map 02:23:45:3C:45:3C net1 map 00:A3:03:63:26:93 net2
參閱 多階段(Multi-stage)對應, 第 10.9 節 取得更進階的範例。
不管採用那一種方式,最常見的是用 MAC 位址來辨認介面卡。 <<<<<<< gateway.sgml --> ======= --> >>>>>>> 1.16
我們已經了解裝置介面是如何設定或重新設定。這些動作需要在適當時機就完成。
傳統上,網路在開機時會經由 /etc/rcS.d/S40networking
這個
initscript
設定完成,極少數的機會重新設定。其他網路服務會在陸續啟動。反過來說,在關機或重開機的時候,initscript
執行的時機剛好相反。
現在,GUN 和 Linux
正朝著支援動態更換硬體和處理突發事件產生的趨勢。首先支援的是可熱(線上)抽換的
PCMCIA 卡。目前的 hotplug
已經支援更多可抽換的週邊硬體,即使是電腦運行中。這也包含了網路硬體。注意,當您移除可熱(線上)抽換的硬體時,牽涉到硬體的服務必須先停止。這表示這類型的服務必須從
System V init 系統移除並歸屬在 ifupdown
的控制下。
例如,支援控制 foo 服務的 initscript:/etc/init.d/foo
仰賴於動態設定的網路介面 eth0。
首先,從 init 系統中移除 foo。如果您使用 sysv-rc
init
系統的話,請完成下列事項。 [62]
# rm /etc/rc[2345].d/S??foo
然後將 foo 加入ifupdown
的控管下,新增up
和 down參數到/etc/network/interfaces
檔案的
eth0敘述。該檔案會呼叫 foo initscript:
iface eth0 inet dhcp up /etc/init.d/foo start down /etc/init.d/foo stop
在啟動 /etc/rcS.d/S40networking
init script 時會執行 ifup
-a
這個指令。這會帶起/etc/network/interfaces
檔案中所有auto敘述的硬體裝置介面。
這表示使用動態方式來設定網路會比較適當。當支援動態更動硬體的技術成熟後,這會是最簡單的方式來轉化固定的硬體當成動態裝置處理。啟動裝置就能當成是另一個熱插拔的事件。(參閱
觸發網路設定 – 使用hotplug
, 第
10.8.2 節。)
儘管如此,大部份的情況下,至少loloopback裝置要在開機時被帶起。所以,確定
/etc/network/interfaces
中有包含底下的敘述。
auto lo iface lo inet loopback
如果妳想讓其他硬體裝置在開機時也被帶起,請加入 auto
敘述吧。絕對不要在 PCMCIA
介面上加入auto敘述。PCMCIA 的管理程式:cardmgr
會在
/etc/rcS.d/S40networking
執行後啟動。
hotplug
安裝 hotplug
套件以尋求 熱抽換的支援。
你可以在開機時或是安裝介面卡(例如 PCMCIA
卡)到系統後或者discover
工具執行後載入必須的驅動程式時隨然抽換您的網路硬體。
當核心偵測到新的硬體,則會初使硬體的驅動程式並執行 hotplug
程式來設定它。如果移除硬體,則核心會再一次執行hotplug
但以不同的環境變數。在
Debian 裡,當hotplug
被呼叫時,會執行/etc/hotplug/
和
/etc/hotplug.d/
目錄底下的 script。更詳盡的訊息請參閱
hotplug(8)
新安裝的網路硬體是由/etc/hotplug/net.agent
這個 script 來設定。 [63] 假設您的 PCMCIA
網路卡在安裝後使得 eth0 為對應的網路裝置介面。則
/etc/hotplug/net.agent
會完成底下的事情 [64] :
ifup eth0=hotplug
除非您加入邏輯裝置介面定義或對應的hotplug名稱到/etc/network/interfaces
,否則該指定不會有任何效果。為了讓該指令能正確設定
eth0,加入下列敘述到/etc/network/interfaces
:
mapping hotplug script echo
如同 高階網路設定--ifupdow
邏輯裝置定義, 第
10.6.2 節 說明的,這將會對應上述的指令,也同等於底下的指令:
ifup eth0=eth0
(如果您使用hotplug
啟動時所帶起的ifplugd
或
waproamd
事件來控制這些裝置介面,千萬不要使用上述的對應敘述。)
如果您只希望eth0在熱抽換時被帶起,改用 grep
來取代
echo
敘述,如同下列:
mapping hotplug script grep map eth0
參閱 神奇的網路設定方式, 第 10.6.3 節 和
/usr/share/doc/hotplug/README.Debian
取得更多小技巧。
ifplugd
ifplugd
daemon
不管實體硬體有無安裝,都能帶起或關閉網路裝置介面。該程式能偵測乙太網路是否接上纜線或是
Wi-Fi 裝置介面是否取得 AP(雖然waproamd
是比較適合後來的情況)。 當
ifplugd
發現連線狀態改變時,它會執行一個代理 script,預設是呼叫
ifup
或 ifdown
。
waproamd
waproamd
daemon 類似ifplugd
,只是說它是針對 Wi-Fi
介面卡設計的。它能動態掃描 Wi-Fi 硬體能存取的 AP。找到能存取的 AP
時,waproamd
會執行 ifup
。
如果您使用 waproamd
,則您應該直接使用waproamd
來設定
Wi-Fi
介面卡而非使用/etc/network/interfaces
中的wireless-*敘述。
有許多可行的辦法來設定 PCMCIA 網路裝置介面(針對 2.4 和 2.6 的核心)。
針對 32 bit PCI (CardBus) PCMCIA 網路卡:
由 hotplug
控制的 ifupdown
在 Woody 或 Sarge
裡,您必須加入對應的敘述到/etc/network/interfaces
使得hotplug
能控制ifupdown
,如同觸發網路設定 – 使用hotplug
, 第
10.8.2 節的說明。
針對 16 bit ISA PCMCIA 網路卡:
使用 hotplug
和 pcmcia-cs
的限制來控制
ifupdown
載入模組
Recommended
在 Woody 或 Sarge 裡,您必須加入exit
0這一行到/etc/pcmcia/network
設定檔開頭來取消pcmcia-cs
控制ifupdown
的預設行為。同時,您必須加入對應的敘述到/etc/network/interfaces
使得hotplug
能控制ifupdown
,如同觸發網路設定 – 使用hotplug
, 第
10.8.2 節的說明。
pcmcia-cs
控制ifupdown
的方式是經由
/etc/pcmcia/network
的設定
不贊成使用,但 Woody 和 Sarge 預設採用這個方式
pcmcia-cs
控制的低階的工具是經由 /etc/pcmcia/network
的特殊代碼所操縱
不贊成使用
在 Woody 和 Sarge 裡,編輯/etc/pcmcia/network.opts
就能啟用特殊代碼
針對 16 bit 的介面卡而言,推薦使用核心 2.4,因為該版本的 hotplug 子系統已經支援 PCMCIA 了。 [65]
PCMCIA網路卡是可熱插拔的。因此,任何使用 PCMCIA 卡的網路服務必須要仔細設定,使得網路卡插入時能正常啟動;網路卡移除時能正常關閉服務。這通常是依據排列ifup和ifdown來啟動或關閉服務才能完成。有些人是限制他們的PCMCIA網路卡為不可抽換:他們會在開機前安裝好網路卡,並在開機過程中陸續啟動需要該網路卡的服務。如果您是這樣的朋友,為了確保該網路卡在啟動服務前是設定良好的。您必須完成下列事項:
在/etc/default/pcmcia
設定CARDMGR_OPTS="-f",這為了強迫cardmgr
在背景執行。
更名 /etc/rc?.d/S20pcmcia
成類似
/etc/rc?.d/S12pcmcia
。
這些動作只適合 16 bit PCMCIA 介面卡。
注意,如果您使用 16 bit PCMCIA
介面卡,還是需要安裝pcmcia-cs
套件。該套件包含的cardmgr
daemon 是用來管理 socket
和載入驅動程式模組。我們不用經由/etc/pcmcia/network
去呼叫網路設定程式。
<<<<<<< gateway.sgml
為了讓cardmgr
能正常工作,您可能要編輯/etc/pcmcia/config.opts
來設定16
bit PCMCIA 介面卡的資源。更多訊息請參閱Linux PCMCIA
HOWTO
=======
為了讓cardmgr
能正常工作,您可能要編輯/etc/pcmcia/config.opts
來設定16
bit PCMCIA 介面卡的資源。更多訊息請參閱 Linux PCMCIA
HOWTO
>>>>>>> 1.16
第一個假設您的網路介面卡是可熱抽換的且您也設定好如觸發網路設定 – 使用hotplug
, 第
10.8.2
節敘述的自動設定功能。第二個假設您需要對應邏輯裝置介面到"實體"裝置介面(如同處理核心的非一致性裝置命名規則, 第 10.7
節的敘述)以及連接到網路的裝置介面(如同使用
guessnet 選擇邏輯裝置介面, 第 10.6.3.1
節的敘述)。您可利用多階段對應來實現這個功能。
如果裝置介面可熱抽換,第一階段的對應則使用 hotplug 群組名並輸出核心所指定的裝置介面。第二階段對應使用核心指定的裝置介面名稱並輸出該介面卡的名稱。第三階段對應以網路環境來對應介面卡名稱和邏輯裝置介面名稱。
# 允許 hotplug 帶起裝置 mapping hotplug script echo # 決定那一個介面是有線或無線 mapping eth? script /usr/local/sbin/get-mac-address.sh map 02:23:45:3C:45:3C wired map 00:A3:03:63:26:93 wifi # 偵測可取得的有線網路 mapping wired script guessnet-ifupdown map work-wired map home # 偵測可取得的無線網路 mapping wifi script ifscout map starbucks map work-wireless iface work-wired inet static ...
家用或桌上型電腦使用的典型網路服務包括:
Internet super-server 和 TCP/IP daemon wrapper, 參閱服務的存取限制, 第 9.2.5 節。
/etc/inetd.conf
ssh
: OpenSSH secure shell, 參閱 SSH, 第 9.5 節.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: 郵件傳送代理, 參閱 郵件名稱, 第
10.3.2 節 和 郵件傳送代理 (MTAs), 第
9.6.1 節.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: 從 POP3 帳號擷取郵件的 daemon, 參閱 擷取信件l – Fetchmail, 第 9.6.2
節.
/etc/fetchmailrc
procmail
: 本地端郵件傳送和分析器, 參閱 處理郵件 – Procmail, 第 9.6.3
節.
~/.procmailrc
主機名稱和 DNS (proxy, cache, ...), 參閱 主機名稱, 第 10.3.1 節 和 網域名稱服務 (DNS), 第 10.4 節.
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(編輯)
/etc/bind/db.lan
(加入區網內的主機)
/etc/bind/db.192.168.0
(加入區網的反查對應)
DHCP, 參閱 安裝網路界面使用 DHCP, 第 10.5 節.
/etc/dhcp3/dhclient.conf
(DHCP 客戶端)
/etc/default/dhcp3-server
(DHCP 伺服器端)
/etc/dhcp3/dhcpd.conf
(DHCP 伺服器端)
cvs
: concurrent versions system, 參閱 Concurrent Versions System (CVS), 第 12.1
節.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: network file system, 參閱NFS設定, 第 3.4 節. (針對 unix-like
系統)
/etc/exports
samba
: Windows 網路檔案和印表機分享, 參閱 Samba設定, 第 3.5 節 and Samba, 第 8.6.38 節.
/etc/samba/smb.conf
印表機 daemon 系統, 參閱 印表機設定, 第 3.6 節.
/etc/printcap
(針對 lpr)
apache
和 apache2
: 網路伺服器.
/etc/apache/*
/etc/apache2/*
squid
: 網頁代理及快取伺服器.
/etc/squid/*
如果您在使用網路時出問題,請先執行下列的敘述來檢查輸出的結果:
# ifconfig # cat /proc/pci # cat /proc/interrupts # dmesg | more
同時,請參閱 網路測試基礎, 第 8.6.29 節 接下來的段落。
如果您無法瀏覽特定的站台,請參閱 無法存取某此站台的怪問題, 第 3.8.5 節。
一台 Debian 主機能完成所有通訊閘機器的功能,諸如網路位址轉譯(NAT, 也稱為 IP 偽裝),傳送郵件,DHCP,DNS 快取,HTTP 代理快取,CVS 服務,NFS 服務以及 Samba 服務。參考 網路所需的主機名和IP地址, 第 3.1.9 節 的範例來設定上述的服務。
netfilter/iptables 專案是核心 2.4 或之後的版本的一個防火牆子系統。參閱 Netfilter
,您會取得許多網路設定的方針和說明。
Netfilter 使用五個內建的 "chain"--PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING 來處理封包。
routing decision IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT interface ROUTING \ filter / ROUTING interface DNAT | tracking ^ SNAT REDIRECT | | MASQUERADE v | INPUT OUTPUT | filter ^ filter,DNAT v | \--> Local Process --/ user-space programs
每一個內建的 "chain" 使用底下的表格來處理所有的封包。
filter (預設使用的封包分析器)
INPUT (針對目標為本地主機的封包)
FORWARD (針對主機路由後的封包)
OUTPUT (針對本地主機產生的封包).
nat (網路位址轉譯)
PREROUTING (針對進入主機所改變的封包)
OUTPUT (針對路由前所改變的本地主機產生的封包)
POSTROUTING (針對要送出所改變的封包)
mangle (network address mangling, 只適用核心 2.4.18 之後的版本)
以上是所有五個內建的鍊。
防火牆的規則有幾種目標:
基本目標:
ACCEPT 表示讓封包通過。
DROP 表示捨棄封包。
QUEUE 表示傳遞封包到 userspace (如果核心支援的話)。
RETURN 表示停止讀取該鍊並回到前一個(呼叫的)鍊中的下一個規則。
擴充的目標:
LOG 啟動核心紀錄功能。
REJECT 回送一個錯誤封包並捨棄該封包。
SNAT 改變封包的來源位址,只用在 POSTROUTING 鍊。(只適用 nat 表格)
--to-source ipaddr[-ipaddr][:port-port]
MASQUERADE 與 SNAT 相同但用在動態指定 IP (撥接)的連線。(只適用 nat 表格)
--to-ports port[-port]
DNAT 改變封包的目的源位址,只用在 PREROUTING 和 OUTPUT 以及使用者組合這兩種鍊的自訂鍊。(只適用 nat 表格)
--to-destination ipaddr[-ipaddr][:port-port]
REDIRECT 改變封包的目的源位址並傳送封包到自己的機器。
--to-ports port[-port]
基本的iptables
指令為:
iptables -N chain # 建立一個新 chain iptables -A chain \ # 加入規則到 chain -t table \ # 使用 table (filter, nat, mangle) -p protocol \ # tcp, udp, icmp, 或 all, -s source-address[/mask] \ --sport port[:port] \ # 當 -p 是 tcp 或 udp 時,指定來源埠號 -d destination-address[/mask] \ --dport port[:port] \ # 當 -p 是 tcp 或 udp 時,指定目的埠號 -j target \ # 如果符合則作何處理 -i in-interface-name \ # 針對 INPUT, FORWARD, PREROUTING -o out-interface-name # 針對 FORWARD, OUTPUT, POSTROUTING
區網內的機器能夠存取網際網路的資源是因為通訊閘轉譯了區網內的 IP 位置成網際網路合法的 IP 位置。
# apt-get install ipmasq
<<<<<<< gateway.sgml
使用範例的規則來加強ipmasq
的保護。 =======
使用範例的規則來加強ipmasq
的保護。參閱/usr/share/doc/ipmasq/examples/stronger/README
。
>>>>>>> 1.16
另外,如果是透過 PCMCIA 網路卡連線的,ipmasq
需要由
/etc/pcmcia/network.opts
(閱讀 /usr/share/doc/ipmasq/ipmasq.txt.gz
)或/etc/network/interfaces
(閱讀
網路設定和 PCMCIA, 第 10.8.5 節 和 觸發(Triggering)網路設定, 第 10.8 節)來啟動。
假設您的筆記型電腦在不同的區網環境下,如果您不希望重新設定郵件用戶代理程式就能直接使用在筆記型電腦上。
執行 iptables
並加入底下的規則,它將會重導 SMTP
連線到通訊閘的機器。
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open
至於完整的重導規則,安裝ipmasq
套件並複製
到M30redirect.def
/etc/ipmasq/rules/
目錄下。
[FIXME] Policy routing (by Phil Brutsche pbrutsch@tux.creighton.edu
):
更多訊息請參閱 iproute
manual
。Traffic control (tc) 也是有幫助的。
環境設定:
eth0: 192.168.1.2/24; 通訊閘 192.168.1.1 eth1: 10.0.0.2/24; 通訊閘 10.0.0.1 該機器沒有任何 IP 偽裝的機制。
Special magic:
ip rule add from 192.168.1.2 lookup 1
ip rule add from 10.0.0.2 lookup 2
ip route add to default via 10.0.0.1 metric 0
ip route add to default via 192.168.1.1 metric 1
ip route add table 1 to 192.168.1.0/24 via eth0
ip route add table 1 to 10.0.0.2/24 via eth1
ip route add table 1 to default via 192.168.1.1
ip route add table 2 to 192.168.1.0/24 via eth0
ip route add table 2 to 10.0.0.2/24 via eth1
ip route add table 2 to default via 10.0.0.2
[FIXME] 我從未試驗過。至於如何設定備緩的撥接以及自動重撥的功能來實現快速連線?還請寄給我一個補丁 :-)
[ 上一頁 ] [ 目錄 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一頁 ]
Debian 參考手冊
CVS, 週四 一月 18 11:53:38 UTC 2007osamu#at#debian.org
asho#at#debian.org.tw