■Linux 網路相關設定檔案
/etc/sysconfig/network: 『主機名稱( HOSTNAME )的修改,啟動 Network 與否』!需要重新啟動 Linux ( reboot ) 才能讓設定生效。
/etc/sysconfig/network-scrips/ifcfg-eth(n):『network, IP, netmask, broadcast, gateway, 開機時的 IP 取得方式( DHCP, static ), 是否在開機的時候啟動』
/etc/modules.conf:外掛的核心模組(可以將他想成是驅動程式)來驅動硬體,這個檔案只在核心找不到網路卡的晶片組時才會動用到!
/etc/resolv.conf: 設定 DNS ( 名稱解析伺服器 ) 的檔案
/etc/hosts:記錄電腦的 IP 對應主機的名稱或者主機的別名
§ 重新啟動網路設定:
[root@test root]# /etc/rc.d/init.d/network restart <==重新啟動網路介面
[root@test root]# ifdown eth0 <==關閉 eth0 網路卡
[root@test root]# ifup eth0 <==啟動 eth0 網路卡
[root@test root]# ifconfig eth0 down
要特別留意的是, GATEWAY 設定的是整個 Linux 系統的 Default Gateway 而不是這塊網路卡的 Gateway 喔!如果您有多張網路卡在 linux 系統上面時,也就是您有 ifcfg-eth0, ifcfg-eth1.... 等多個檔案,只要在其中一個檔案設定 GATEWAY 即可!不要每個檔案都設定啊
請特別留意的是,手動以 ifconfig 這個指令來修改 IP 或者是網路卡參數是可行的,您可以在任何時刻手動的修改。不過,如果原先以 ifup eth0 的方式來啟動網路卡之後,再以 ifconfig 來進行 IP 的修改,那麼網路的的啟動與關閉就得使用 ifconfig 了,不能夠使用 ifdown eth0 來關閉了!
修改 IP 原則就是:
先以檔案的型態 ifcfg-eth0 來設定好您的網路參數,而如果想要暫時更動網路參數的話,那麼就使用 ifconfig 來進行修改,如此一來,未來重新開機之後,還是會以 ifcfg-eth0 的設定為準!
■ Linux 常用網路指令介紹
§ 設定網路參數使用的指令: ifconfig
[root@test test]# ifconfig interface [options]
參數說明:
interface :網路介面卡代號,例如 eth0, eth1...
options :主要有以下幾個參數
network :網段
broadcast :廣播網段
netmask :子網路遮罩
up|down :啟動|關閉網路介面
[root@test root]# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 \
> broadcast 192.168.0.255
上面再將 eth0 這個網路介面的 IP 屬性修改為 192.168.0.2 這個 IP ,廣播位址也跟著改變了!
[root@test root]# ifconfig eth0 down <==關閉 eth0 網路卡 ifup eth0
[root@test root]# ifconfig eth0 up <==啟動 eth0 網路卡! ifdown eth0
§ 啟動與關閉某個網路介面卡:ifup, ifdown
[root@test root]# ifup [interface]
[root@test root]# ifdown [interface]
參數說明:
範例:
[root@test root]# ifup eth0 <==啟動 eth0 這塊網路卡!
[root@test root]# ifdown eth0<==關閉 eth0 這塊網路卡
這兩個指令要比 ifconfig 簡單的多!不過他卻必須要有相關的檔案存在才能啟動呦
我們要啟動 eth0 這塊網路卡的時候,那麼您的 Linux 系統當中就必須要存在 /etc/sysconfig/network-scripts/ifcfg-eth0 這個網路介面卡的設定檔案才行!
§ 顯示/修改路由表( route table ) :route
[root@test root]# route [-nee]
[root@test root]# route add [-net|-host] 目標主機或網域 [netmask] [gw|dev]
[root@test root]# route del [-net|-host] 目標主機或網域 [netmask] [gw|dev]
參數說明:
-n :列出的資訊以 IP 來顯示
-ee :列出較長列的資訊
add :增加路由資訊
del :刪除一個路由資訊
-net :增加一個『網域』的路由,例如 C Class 的網域!
-host :增加到某個 IP 主機的路由!
netmask :就是 netmask 呀!
gw :這個是路由的通訊閘! gw 是以 IP 來建置的
dev :這個是路由的通訊閘! dev 是以 介面 ( internet ) 代號來建置的!
範例:
[root@test root]# route<==看路由的資訊!
[root@test root]# route -n <==以 IP 的方式來顯示路由!
注意到 route, route -n 這兩個範例喔!使用 -n 與否會使 domain 是否進行查詢,
一般來說,我都喜歡加上 -n 的,因為不必去查詢正反解,顯示速度較快, 此外, default gateway 就是 0.0.0.0 喔!
[root@test root]# route add -net 192.168.0.0 netmask 255.255.255.0 dev eth0 # 新增一個路由規則!
[root@test root]# route del -net 192.168.0.0 netmask 255.255.255.0 dev eth0 # 刪除一個路由囉
[root@test root]# route add default gw 192.168.1.2 # 增加一個 default gateway 呢!
注意一下, gw 後面接的是 IP ,而 dev 後面接的則是裝置代號喔!
這個指令相當的有用!尤其是新手們最容易犯錯的 gateway 設定錯誤的問題,都可以藉由這一個指令來檢查呢!
§ 傳送一個 ICMP 封包給某部主機:ping
[test@test test]# ping [-b broadcast]
[test@test test]# ping [-c number] host
參數說明:
-b broadcast :當要 ping 一個網段時,可以使用這個方式來『廣播』!
-c number :後面加上 number (數字)可以限制 ping 幾次!
範例:
[test@test test]# ping -c 5 tw.yahoo.com <==除了IP也可以 ping domain name!
[test@test test]# ping -b 192.168.1.255 -c 2 <==這裡必須是廣播位址
§ 調查連接到某部主機時,每個節點的連線速度:traceroute
[root@test root]# traceroute [-i interface] [-g gateway] [host|IP]
參數說明:
-i :使用這個 interface 來連出去!例如 eth0, ppp0 等!
-g :使用這個 gateway 來連出去!例如 192.168.1.2, 140.116.141.29 等!
範例:
[root@test root]# traceroute tw.yahoo.com
這個指令相當的有用途,他可以用來判斷當一部遠端主機無法連線時候,到底封包是停頓在哪一個節點上!
萬一如果出現了 *** 在 traceroute 的輸出結果中,那就表示該 router 應該有點問題吶!
§ 查閱網路資訊的指令P:netstat
[root@test root]# netstat [-r] [-i interface]
[root@test root]# netstat [-antulp]
參數說明:
-r :顯示出 route 的意思;
-i :顯示出 interface 的內容,跟 ifconfig 類似啦!
-a :顯示出目前所有的網路連線狀態!
-n :預設情況中,顯示出的 host 會以 host name 來顯現,若為 n 則可以使 port 與 host 都以數字顯示
-t :僅顯示 tcp 封包的連線行為
-u :僅顯示 udp 的封包連線狀態
-l :僅顯示 LISTEN 的內容
-p :同時顯示此一連線的 PID 喔!(注意:只有 root 才能行使此功能!)
範例:
[root@test root]# netstat -r # 嘿嘿!顯示出目前的路由表!與 route 指令的功能相同。
[root@test root]# netstat -i eth0 # 看看底下顯示出的內容,是否跟 ifconfig eth0 類似呀!?
[root@test root]# netstat -an <==顯示所有的連線狀態,並且以數字型態顯示
[root@test root]# netstat -tul <==顯示 LISTEN 的及 tcp 與 udp 的連線狀態
那個 -p 也很有用呦!尤其是在一些莫名其妙的連線出現時,可以用 -p 這個參數查到 PID ,然後再以利用 kill 來殺掉他呦!
§ 顯示主機名稱( domain name ) :host
語法: [root@test root]# host [-a] domain_name
參數說明:
-a :顯示出所有的資訊
範例:
[root@test root]# host tw.yahoo.com <==僅顯示出主機的 IP
tw.yahoo.com. has address 202.1.237.21
[root@test root]# host -a tw.yahoo.com <==所有的主機資訊顯示!
§ 查詢主機名稱與 IP 的對應
[root@test root]# nslookup [domain_name|IP]
參數說明:
範例:
[root@test root]# nslookup tw.yahoo.com <==由 domain name 查詢 IP!
[root@test root]# nslookup 202.1.237.21 <==由 IP 查詢 domain name
§ 用來連線遠端主機,當然, BBS 主機也可以連線:telnet
[root@test root]# telnet [-8] [host|IP] [port]
參數說明:
-8 :可以減少亂碼的情況
port:服務的埠口!例如 POP3 的 110 ,SMTP 的 25 port 等等!telnet 可以用來偵測!
[root@test root]# telnet localhost 110 # 偵測本機端的 110 這個 port 是否有啟動
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused 幫助您測試主機端某個 埠口 的連線情況!
§ 遠端傳送資料當中,速度最快的協定之一 :ftp
[root@test root]# ftp [-p] host [port]
參數說明:
-p :啟動 PASSIVE 模式!
範例:
[root@test root]# ftp localhost <==預設是以 port 21 來進行連線
[root@test root]# ftp localhost 1354
# 如果您設定的 ftp 的 port 非正規的 21 ,則可以這樣!
[root@test root]# ftp localhost <==連接到遠端主機
Connected to localhost (127.0.0.1).
220 localhost FTP server (Version wu-2.6.1-20) ready.
Name (127.0.0.1:test): test <==輸入帳號
331 Password required for test.
Password: <==輸入密碼
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir <==顯示遠方主機的內容
ftp> cd <==變換遠端主機的目錄 cd .. 退出目錄
ftp> close or bye or exit <==離開遠端主機
ftp> get file <==取得遠端主機的檔案
ftp> mget file <==取得所有的檔案,較 get 好用!例如 mget .bash*
ftp> put file <==將本地端檔案 file 丟到遠端主機上
ftp> mput file <==將一些檔案上傳咯
ftp> delete file <==殺掉遠端主機的 file 檔案
ftp> help <==顯示求救指令!
ftp> mkdir dir <==在遠端主機上面建立目錄
ftp> lcd <==變換本地端路徑!
ftp> ascii or binary <==以 ASCII 模式或 BINARY 模式捉取資料!?
§ 登入匿名主機最好用的文字介面 FTP 軟體:ncftp
[root@test root]# ncftp [host]
[root@test root]# ncftp [ftp://domain.name/path]
參數說明:
可以直接連接到 host 主機,也可以直接連接到主機的某個路徑之下,相當的方便
範例:
[root@test root]# ncftp ftp.nsysu.edu.tw <==連接到中山大學 FTP 站
[root@test root]# ncftp ftp://ftp.nsysu.edu.tw/Linux
Logged in to ftp.nsysu.edu.tw.
Current remote directory is /pub/Linux.
ncftp /pub/Linux > <==瞧!直接進入畫面囉!而且不需要輸入帳號與密碼呢!
遠端主機的一些服務指令:
ncftp /pub/Linux > cd Redhat <==變換目錄
ncftp /pub/Linux > dir <==顯示目前目錄下的檔案與目錄資訊
ncftp /pub/Linux > get file1 <==將 file1 的資料存到本地端
ncftp /pub/Linux > get -z file1 file2 <==將 file1 存到本地端時改檔名為 file2
ncftp /pub/Linux > get -A file1 file2
# 將 file1 以累積的方式(append)增加到 file2 這個檔案
ncftp /pub/Linux > pub file <==將檔案由本地端上傳至遠端!
ncftp /pub/Linux > rename file1 file2 <==將遠端的主機之 file1 更名為 file2
ncftp /pub/Linux > rm file <==刪除檔案
ncftp /pub/Linux > rmdir directory <==刪除目錄
ncftp /pub/Linux > mget directory
# 可以下載『整個目錄』的資料!很棒吧!
本地端主機的一些指令功能:
ncftp /pub/Linux > lcd <==變更本地端目前所在的目錄
ncftp /pub/Linux > lls <==顯示目前本地端所在目錄的檔案與目錄資訊
ncftp /pub/Linux > lmkdir <==在本地端建立目錄
ncftp /pub/Linux > lpwd <==顯示目前本地端主機的所在目錄
ncftp /pub/Linux > lrm <==刪除本地端的檔案
ncftp /pub/Linux > lrmdir <==刪除本地端的『目錄』