linux命令配置IP詳解
在Linux 系統(tǒng)中,TCP/IP網(wǎng)絡(luò)是通過若干個(gè)文本文件進(jìn)行配置的,有時(shí)需要編輯這些文件來完成聯(lián)網(wǎng)工作。vi /etc/sysconfig/network-scripts/ifcfg-eth0 :進(jìn)
在Linux 系統(tǒng)中,TCP/IP網(wǎng)絡(luò)是通過若干個(gè)文本文件進(jìn)行配置的,有時(shí)需要編輯這些文件來完成聯(lián)網(wǎng)工作。
vi /etc/sysconfig/network-scripts/ifcfg-eth0 :進(jìn)入IP 編譯器
按 i 下面出現(xiàn)-- INSERT -- :寫入模式 出現(xiàn)下列信息
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static // BOOTPROTO只有在static(靜態(tài)) 模式下才可以使用設(shè)置的IP 信息
HWADDR=00:0c:29:9e:43:e4
ONBOOT=yes
NETMASK=255.255.255.240 //掩碼
IPADDR=220.181.77.132 //添加IP 地址
GATEWAY=220.181.77.129 //添加網(wǎng)關(guān)
TYPE=Ethernet
按 冒號(hào) : wq 保存退出
修改dns
vim /etc/resolv.conf
重啟網(wǎng)卡
service network restart
,在此我們?cè)敿?xì)介紹如何使用命令行來手工配置TCP/IP網(wǎng)絡(luò)。
與網(wǎng)絡(luò)相關(guān)的配置文件
和網(wǎng)絡(luò)相關(guān)的一些配置文件有/etc/HOSTNAME、/etc/resolv.conf、/etc/host.conf、/etc/sysconfig/network、/etc/hosts等文件。下面一一介紹。
/etc/HOSTNAME文件
該文件包含了系統(tǒng)的主機(jī)名稱,包括完全的域名,例如www.linuxaid.com.cn 。
在Red Hat 7.2中,系統(tǒng)網(wǎng)絡(luò)設(shè)備的配置文件保存在“/etc/sysconfig/network-scripts”目錄下。ifcfg-eth0包含第一塊網(wǎng)卡的配置信息,ifcfg-eht 包含第二塊網(wǎng)卡的配置信息。下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:
DEVICE=eth0
IPADDR=208.164.186.1
NETMASK=255.255.255.0
NETWORK=208.164.186.0
BROADCAST=208.164.186.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
其中各變量關(guān)鍵詞的解釋如下:
DEVICE=name name表示物理設(shè)備的名字
IPADDR=addr addr表示賦給該卡的I P地址
NETMASK=mask mask表示網(wǎng)絡(luò)掩碼
NETWORK=addr addr表示網(wǎng)絡(luò)地址
BROADCE ST=addr addr表示廣播地址
,ONBOOT=yes/no 啟動(dòng)時(shí)是否激活該卡
BOOTPROTO=proto proto取值可以是none(無須啟動(dòng)協(xié)議) 、bootp(使用bootp 協(xié)議) 、dhcp(使用DHCP 協(xié)議)
USERCTL=yes/no 是否允許非root 用戶控制該設(shè)備
若希望手工修改網(wǎng)絡(luò)地址或在新的接口上增加新的網(wǎng)絡(luò)界面,可以通過修改對(duì)應(yīng)文件(ifcfg-ethN)或創(chuàng)建新文件來實(shí)現(xiàn)。
/etc/resolv.conf文件
該文件是解析器(resolver,一個(gè)根據(jù)主機(jī)名解析IP 地址的庫) 使用的配置文件,示例如下:
search domainname.com
nameserver 208.164.186.1
nameserver 208.164.186.2
search domainname.com表示當(dāng)提供了一個(gè)不包括完全域名的主機(jī)名時(shí),在該主機(jī)名后添加domainname.com 的后綴;nameserver 表示解析域名時(shí)使用該地址指定的主機(jī)為域名服務(wù)器。域名服務(wù)器是按照文件中出現(xiàn)的順序來查詢的。
/etc/host.conf文件
該文件指定如何解析主機(jī)名。Linux 通過解析器庫來獲得主機(jī)名對(duì)應(yīng)的IP 地址。下面是一個(gè)“/etc /host. conf”的示例:
order bind,hosts
multi on
nospoof on
“order bind,hosts”指定主機(jī)名查詢順序。這里規(guī)定先使用DNS 來解析域名,然后再查詢“/etc/hosts”文件。
“multi on”指定是否“/etc/hosts”文件中指定的主機(jī)可以有多個(gè)地址。擁有多個(gè)IP 地址的主機(jī)一般具有多個(gè)網(wǎng)絡(luò)界面。
,“nospoof on”指不允許對(duì)該服務(wù)器進(jìn)行IP 地址欺騙。IP 欺騙是一種攻擊系統(tǒng)安全的手段,指通過把IP 地址偽裝成別的計(jì)算機(jī),來取得其他計(jì)算機(jī)的信任。
/etc/sysconfig/network文件
該文件用來指定服務(wù)器上的網(wǎng)絡(luò)配置信息,下面是一個(gè)示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GATEWAY=0.0.0.0
GATEWAYDEV=
其中各變量的解釋如下:
NETWORK=yes/no 網(wǎng)絡(luò)是否被配置
FORWARD_IPV4=yes/no 是否開啟IP 轉(zhuǎn)發(fā)功能
HOSTNAME=hostname hostname表示服務(wù)器主機(jī)名
GATEWAY=gw-ip gw-ip表示網(wǎng)絡(luò)網(wǎng)關(guān)的IP 地址
GATEWAYDEV=gw-dev gw-dw表示網(wǎng)關(guān)的設(shè)備名,如etho 等
注意:為了和老的軟件相兼容,“/etc/ HOSTNAME”文件應(yīng)該用與HOSTNAME= hostname 相同的主機(jī)名。
/etc/hosts文件
機(jī)器啟動(dòng)時(shí),在查詢DNS 以前,機(jī)器需要查詢一些主機(jī)名與IP 地址的匹配。這些匹配信息存放在/etc/hosts文件中。在沒有域名服務(wù)器情況下,系統(tǒng)上的所有網(wǎng)絡(luò)程序都通過查詢?cè)撐募斫馕鰧?duì)應(yīng)于某個(gè)主機(jī)名的IP 地址。
注意:tcpd 程序是負(fù)責(zé)檢測(cè)telnet 、FTP 等服務(wù)請(qǐng)求的。一旦有服務(wù)請(qǐng)求到來,inetd 進(jìn)程將啟動(dòng)tcpd 進(jìn)程。tcpd 在日志文件中記錄該請(qǐng)求,并且完成其它一些檢測(cè)工作。如果一切正常通過,tcpd 將啟動(dòng)相應(yīng)的服務(wù)器進(jìn)程,然后結(jié)束。tcpd 要通過查詢DNS 服務(wù)器,先對(duì)該客戶機(jī)的IP 地址進(jìn)行反向解析得到主機(jī)名,然后再解析得到該主機(jī)名對(duì)應(yīng)的IP 地址,
,接著把得到IP 地址和發(fā)出請(qǐng)求的客戶機(jī)器的IP 地址進(jìn)行比較。通過這些步驟來實(shí)現(xiàn)對(duì)發(fā)送請(qǐng)求客戶機(jī)的驗(yàn)證。若兩者不匹配,則tcpd 認(rèn)為發(fā)出請(qǐng)求的機(jī)器偽裝成了其它的機(jī)器,并拒絕其請(qǐng)求。這就是為什么有時(shí)候telnet 到Linux 機(jī)器要等待那么長(zhǎng)時(shí)間的原因。通過在“/etc /hosts”中加入客戶機(jī)器的IP 地址和主機(jī)名的匹配項(xiàng),可以減少登錄等待時(shí)間。
tcpd 可以設(shè)置成禁止源路徑路由(source routing)socket的連接請(qǐng)求。這個(gè)設(shè)置可以避免黑客用把自己的IP 地址偽裝成別的計(jì)算機(jī)IP 地址攻擊服務(wù)器。請(qǐng)注意:這個(gè)設(shè)置對(duì)UDP 無效。當(dāng)服務(wù)器試圖把請(qǐng)求服務(wù)的客戶機(jī)的IP 地址反向解析成主機(jī)名的時(shí)候,經(jīng)常會(huì)出現(xiàn)超時(shí)(timeout)錯(cuò)誤。其原因可能是DNS 服務(wù)器沒有配置好,或者DNS 根本沒有請(qǐng)求服務(wù)的客戶端計(jì)算機(jī)的任何信息。
配置TCP/IP網(wǎng)絡(luò)
ifconfig 是用來設(shè)置和配置網(wǎng)卡的命令行工具。為了手工配置網(wǎng)絡(luò),需要熟悉這個(gè)命令。使用該命令的好處是無須重新啟動(dòng)機(jī)器。
要賦給eth0接口IP 地址208.164.186.2,使用命令:
#ifconfig eth0 208.164.186.2 netmask 255.255.255.0
要列出所有的網(wǎng)絡(luò)接口,使用命令:
# ifconfig
這個(gè)命令的輸出是這樣的:
eth0 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56
inet addr:208.164.186.2 Bcast:208.164.186.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1295 errors:0 dropped:0 overruns:0 frame:0
TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xa800
lo Link encap:Local Loopback
,inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:139 errors:0 dropped:0 overruns:0 frame:0
TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
若運(yùn)行不帶任何參數(shù)的ifconfig 命令,這個(gè)命令將顯示機(jī)器所有激活接口的信息。帶有“-a”參數(shù)的命令則顯示所有接口的信息,包括沒有激活的接口,例如:
# ifconfig -a
這個(gè)命令的輸出是這樣的:
eth0 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56
inet addr:208.164.186.2 Bcast:208.164.186.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1295 errors:0 dropped:0 overruns:0 frame:0
TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:11 Base address:0xa800
eth1 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1295 errors:0 dropped:0 overruns:0 frame:0
TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
,Interrupt:5 Base address:0xa320
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:139 errors:0 dropped:0 overruns:0 frame:0
TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
注意:用ifconfig 命令配置的網(wǎng)絡(luò)設(shè)備參數(shù),機(jī)器重新啟動(dòng)以后將會(huì)丟失。要給208.164.186.1配置默認(rèn)網(wǎng)關(guān),使用命令:
# route add default gw 208.164.186.1
在這個(gè)例子中,默認(rèn)網(wǎng)關(guān)設(shè)置為208.164.186.1。然后,測(cè)試一下是否可以連通本網(wǎng)段的機(jī)器。從網(wǎng)絡(luò)上隨便選一臺(tái)主機(jī),比如:208.164.186.1測(cè)試一下。用下面的命令測(cè)試一下能否連通這臺(tái)計(jì)算機(jī):
# ping 208.164.186.1
輸出會(huì)是這樣的:
PING 208.164.186.1 (208.164.186.1) from 208.164.186.2 : 56 data bytes
64 bytes from208.164.186.2:icmp_seq=0 ttl=128time=1.0ms
64 bytes from 208.164.186.2:icmp_seq=1ttl=128time=1.0ms
64 bytes from 208.164.186.2:icmp_seq=2ttl=128time=1.0ms
64 bytes from 208.164.186.2:icmp_seq=3ttl=128time=1.0ms
--- 208.164.186.1 ping statistics ---
4 packets transmitted, 4 packets received, 0 packet loss
round-trip min/avg/max = 1.0/1.0/1.0 ms
,現(xiàn)在可以使用route 命令輸出路由表信息來查看。
用下面的命令顯示路由信息:
# route -n
輸出是這樣的:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
208.164.186.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
208.164.186.0 208.164.186.2 255.255.255.0 UG 0 0 0 eth0
208.164.186.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
為了快速檢查接口狀態(tài)信息,使用netstat -i命令:
# netstat -i
輸出是這樣的:
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 4236 0 0 0 3700 0 0 0 BRU
lo 3924 0 13300 0 0 0 13300 0 0 0 LRU
ppp0 1500 0 14 1 0 0 16 0 0 0 PRU
netstat 命令的另外一個(gè)有用選項(xiàng)是“-t”。它顯示所有激活的TCP 連接:
# netstat -t
輸出是這樣的:
,Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
Tcp 0 0 deep.openar:netbios-ssn gate.openarch.com:1045 ESTABLISHED Tcp 0 0 localhost:1032 localhost:1033 ESTABLISHED
Tcp 0 localhost:1033 localhost:1032 ESTABLISHED
Tcp 0 localhost:1030 localhost:1034 ESTABLISHED
Tcp 0 0 localhost:1031 localhost:1030 ESTABLISHED
Tcp 0 0 localhost:1028 localhost:1029 ESTABLISHED
Tcp 0 0 localhost:1029 localhost:1028 ESTABLISHED
Tcp 0 0 localhost:1026 localhost:1027 ESTABLISHED
Tcp 0 0 localhost:1027 localhost:1026 ESTABLISHED
Tcp 0 0 localhost:1024 localhost:1025 ESTABLISHED
Tcp 0 0 localhost:1025 localhost:1024 ESTABLISHED
要顯示所有活動(dòng)和被監(jiān)聽的TCP 連接,使用命令:
# netstat -vat
輸出是這樣的:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 deep.openarch.co:domain *:* LISTEN
tcp 0 0 localhost:domain *:* LISTEN
tcp 0 0 deep.openarch.com:ssh gate.openarch.com:1682 ESTABLISHED tcp 0 0 *:webcache *:* LISTEN
,tcp 0 0 deep.openar:netbios-ssn *:* LISTEN tcp 0 0 localhost:netbios-ssn *:* LISTEN
tcp 0 0 localhost:1032 localhost:1033 ESTABLISHED tcp 0 0 localhost:1033 localhost:1032 ESTABLISHED tcp 0 0 localhost:1030 localhost:1031 ESTABLISHED tcp 0 0 localhost:1031 localhost:1030 ESTABLISHED tcp 0 0 localhost:1028 localhost:1029 ESTABLISHED tcp 0 0 localhost:1029 localhost:1028 ESTABLISHED tcp 0 0 localhost:1026 localhost:1027 ESTABLISHED tcp 0 0 localhost:1027 localhost:1026 ESTABLISHED tcp 0 0 localhost:1024 localhost:1025 ESTABLISHED tcp 0 0 localhost:1025 localhost:1024 ESTABLISHED tcp 0 0 deep.openarch.com:www *:* LISTEN tcp 0 0 deep.openarch.com:https *:* LISTEN tcp 0 0 *:389 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
要使系統(tǒng)中所有網(wǎng)絡(luò)接口停止工作,使用命令: # /etc/rc.d/init.d/network stop
要啟動(dòng)系統(tǒng)中所有網(wǎng)絡(luò)接口,使用命令:
# /etc/rc.d/init.d/network start