linux命令配置IP詳解
在Linux 系統(tǒng)中,TCP/IP網(wǎng)絡是通過若干個文本文件進行配置的,有時需要編輯這些文件來完成聯(lián)網(wǎng)工作。vi /etc/sysconfig/network-scripts/ifcfg-eth0 :進
在Linux 系統(tǒng)中,TCP/IP網(wǎng)絡是通過若干個文本文件進行配置的,有時需要編輯這些文件來完成聯(lián)網(wǎng)工作。
vi /etc/sysconfig/network-scripts/ifcfg-eth0 :進入IP 編譯器
按 i 下面出現(xiàn)-- INSERT -- :寫入模式 出現(xiàn)下列信息
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static // BOOTPROTO只有在static(靜態(tài)) 模式下才可以使用設置的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)關
TYPE=Ethernet
按 冒號 : wq 保存退出
修改dns
vim /etc/resolv.conf
重啟網(wǎng)卡
service network restart
,在此我們詳細介紹如何使用命令行來手工配置TCP/IP網(wǎng)絡。
與網(wǎng)絡相關的配置文件
和網(wǎng)絡相關的一些配置文件有/etc/HOSTNAME、/etc/resolv.conf、/etc/host.conf、/etc/sysconfig/network、/etc/hosts等文件。下面一一介紹。
/etc/HOSTNAME文件
該文件包含了系統(tǒng)的主機名稱,包括完全的域名,例如www.linuxaid.com.cn 。
在Red Hat 7.2中,系統(tǒng)網(wǎng)絡設備的配置文件保存在“/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
其中各變量關鍵詞的解釋如下:
DEVICE=name name表示物理設備的名字
IPADDR=addr addr表示賦給該卡的I P地址
NETMASK=mask mask表示網(wǎng)絡掩碼
NETWORK=addr addr表示網(wǎng)絡地址
BROADCE ST=addr addr表示廣播地址
,ONBOOT=yes/no 啟動時是否激活該卡
BOOTPROTO=proto proto取值可以是none(無須啟動協(xié)議) 、bootp(使用bootp 協(xié)議) 、dhcp(使用DHCP 協(xié)議)
USERCTL=yes/no 是否允許非root 用戶控制該設備
若希望手工修改網(wǎng)絡地址或在新的接口上增加新的網(wǎng)絡界面,可以通過修改對應文件(ifcfg-ethN)或創(chuàng)建新文件來實現(xiàn)。
/etc/resolv.conf文件
該文件是解析器(resolver,一個根據(jù)主機名解析IP 地址的庫) 使用的配置文件,示例如下:
search domainname.com
nameserver 208.164.186.1
nameserver 208.164.186.2
search domainname.com表示當提供了一個不包括完全域名的主機名時,在該主機名后添加domainname.com 的后綴;nameserver 表示解析域名時使用該地址指定的主機為域名服務器。域名服務器是按照文件中出現(xiàn)的順序來查詢的。
/etc/host.conf文件
該文件指定如何解析主機名。Linux 通過解析器庫來獲得主機名對應的IP 地址。下面是一個“/etc /host. conf”的示例:
order bind,hosts
multi on
nospoof on
“order bind,hosts”指定主機名查詢順序。這里規(guī)定先使用DNS 來解析域名,然后再查詢“/etc/hosts”文件。
“multi on”指定是否“/etc/hosts”文件中指定的主機可以有多個地址。擁有多個IP 地址的主機一般具有多個網(wǎng)絡界面。
,“nospoof on”指不允許對該服務器進行IP 地址欺騙。IP 欺騙是一種攻擊系統(tǒng)安全的手段,指通過把IP 地址偽裝成別的計算機,來取得其他計算機的信任。
/etc/sysconfig/network文件
該文件用來指定服務器上的網(wǎng)絡配置信息,下面是一個示例:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GATEWAY=0.0.0.0
GATEWAYDEV=
其中各變量的解釋如下:
NETWORK=yes/no 網(wǎng)絡是否被配置
FORWARD_IPV4=yes/no 是否開啟IP 轉發(fā)功能
HOSTNAME=hostname hostname表示服務器主機名
GATEWAY=gw-ip gw-ip表示網(wǎng)絡網(wǎng)關的IP 地址
GATEWAYDEV=gw-dev gw-dw表示網(wǎng)關的設備名,如etho 等
注意:為了和老的軟件相兼容,“/etc/ HOSTNAME”文件應該用與HOSTNAME= hostname 相同的主機名。
/etc/hosts文件
機器啟動時,在查詢DNS 以前,機器需要查詢一些主機名與IP 地址的匹配。這些匹配信息存放在/etc/hosts文件中。在沒有域名服務器情況下,系統(tǒng)上的所有網(wǎng)絡程序都通過查詢該文件來解析對應于某個主機名的IP 地址。
注意:tcpd 程序是負責檢測telnet 、FTP 等服務請求的。一旦有服務請求到來,inetd 進程將啟動tcpd 進程。tcpd 在日志文件中記錄該請求,并且完成其它一些檢測工作。如果一切正常通過,tcpd 將啟動相應的服務器進程,然后結束。tcpd 要通過查詢DNS 服務器,先對該客戶機的IP 地址進行反向解析得到主機名,然后再解析得到該主機名對應的IP 地址,
,接著把得到IP 地址和發(fā)出請求的客戶機器的IP 地址進行比較。通過這些步驟來實現(xiàn)對發(fā)送請求客戶機的驗證。若兩者不匹配,則tcpd 認為發(fā)出請求的機器偽裝成了其它的機器,并拒絕其請求。這就是為什么有時候telnet 到Linux 機器要等待那么長時間的原因。通過在“/etc /hosts”中加入客戶機器的IP 地址和主機名的匹配項,可以減少登錄等待時間。
tcpd 可以設置成禁止源路徑路由(source routing)socket的連接請求。這個設置可以避免黑客用把自己的IP 地址偽裝成別的計算機IP 地址攻擊服務器。請注意:這個設置對UDP 無效。當服務器試圖把請求服務的客戶機的IP 地址反向解析成主機名的時候,經(jīng)常會出現(xiàn)超時(timeout)錯誤。其原因可能是DNS 服務器沒有配置好,或者DNS 根本沒有請求服務的客戶端計算機的任何信息。
配置TCP/IP網(wǎng)絡
ifconfig 是用來設置和配置網(wǎng)卡的命令行工具。為了手工配置網(wǎng)絡,需要熟悉這個命令。使用該命令的好處是無須重新啟動機器。
要賦給eth0接口IP 地址208.164.186.2,使用命令:
#ifconfig eth0 208.164.186.2 netmask 255.255.255.0
要列出所有的網(wǎng)絡接口,使用命令:
# ifconfig
這個命令的輸出是這樣的:
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
若運行不帶任何參數(shù)的ifconfig 命令,這個命令將顯示機器所有激活接口的信息。帶有“-a”參數(shù)的命令則顯示所有接口的信息,包括沒有激活的接口,例如:
# ifconfig -a
這個命令的輸出是這樣的:
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)絡設備參數(shù),機器重新啟動以后將會丟失。要給208.164.186.1配置默認網(wǎng)關,使用命令:
# route add default gw 208.164.186.1
在這個例子中,默認網(wǎng)關設置為208.164.186.1。然后,測試一下是否可以連通本網(wǎng)段的機器。從網(wǎng)絡上隨便選一臺主機,比如:208.164.186.1測試一下。用下面的命令測試一下能否連通這臺計算機:
# ping 208.164.186.1
輸出會是這樣的:
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 命令的另外一個有用選項是“-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
要顯示所有活動和被監(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)絡接口停止工作,使用命令: # /etc/rc.d/init.d/network stop
要啟動系統(tǒng)中所有網(wǎng)絡接口,使用命令:
# /etc/rc.d/init.d/network start