歡迎您光臨本站 註冊首頁

用Linux命令手工配置TCP/IP網路

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

在Linux系統中,TCP/IP網路是通過若干個文本文件進行配置的,有時需要編輯這些文件來完成聯網工作。在此我們詳細介紹如何使用命令行來手工配置TCP/IP網路。

與網路相關的配置文件

和網路相關的一些配置文件有/etc/HOSTNAME、/etc/resolv.conf、/etc/host.conf、/etc/sysconfig/network、/etc/hosts等文件。下面一一介紹。

/etc/HOSTNAME文件

該文件包含了系統的主機名稱,包括完全的域名,例如www.linuxdiyf.com。

在Red Hat 7.2中,系統網路設備的配置文件保存在「/etc/sysconfig/network-scripts」目錄下。ifcfg-eth0包含第一塊網卡 的配置信息,ifcfg-eht包含第二塊網卡的配置信息。下面是「/etc/sysconfig/network-scripts/ifcfg- eth0」文件的示例:
CODE:
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表示網路掩碼

NETWORK=addr addr表示網路地址

BROADCE ST=addr addr表示廣播地址

ONBOOT=yes/no 啟動時是否激活該卡

BOOTPROTO=proto proto取值可以是none(無須啟動協議)、bootp(使用bootp協議)、dhcp(使用DHCP協議)
USERCTL=yes/no 是否允許非root用戶控制該設備

若希望手工修改網路地址或在新的介面上增加新的網路界面,可以通過修改對應文件(ifcfg-ethN)或創建新文件來實現。
  
/etc/resolv.conf文件

該文件是解析器(resolver,一個根據主機名解析IP地址的庫)使用的配置文件,示例如下:
CODE:
search domainname.com
nameserver 208.164.186.1
nameserver 208.164.186.2

search domainname.com表示當提供了一個不包括完全域名的主機名時,在該主機名后添加domainname.com的後綴;nameserver表 示解析域名時使用該地址指定的主機為域名伺服器。域名伺服器是按照文件中出現的順序來查詢的。

/etc/host.conf文件

該文件指定如何解析主機名。Linux通過解析器庫來獲得主機名對應的IP地址。下面是一個「/etc /host. conf」的示例:
CODE:
order bind,hosts
multi on
nospoof on

「order bind,hosts」指定主機名查詢順序。這裡規定先使用DNS來解析域名,然後再查詢「/etc/hosts」文件。
「multi on」指定是否「/etc/hosts」文件中指定的主機可以有多個地址。擁有多個IP地址的主機一般具有多個網路界面。

「nospoof on」指不允許對該伺服器進行IP地址欺騙。IP欺騙是一種攻擊系統安全的手段,指通過把IP地址偽裝成別的計算機,來取得其他計算機的信任。

/etc/sysconfig/network文件

該文件用來指定伺服器上的網路配置信息,下面是一個示例:
CODE:
NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GATEWAY=0.0.0.0
GATEWAYDEV=

其中各變數的解釋如下:
NETWORK=yes/no 網路是否被配置

FORWARD_IPV4=yes/no 是否開啟IP轉發功能

HOSTNAME=hostname hostname表示伺服器主機名

GATEWAY=gw-ip gw-ip表示網路網關的IP地址

GATEWAYDEV=gw-dev gw-dw表示網關的設備名,如etho等

注意:為了和老的軟體相兼容,「/etc/ HOSTNAME」文件應該用與HOSTNAME= hostname相同的主機名。

/etc/hosts文件

機器啟動時,在查詢DNS以前,機器需要查詢一些主機名與IP地址的匹配。這些匹配信息存放在/etc/hosts文件中。在沒有域名伺服器情況下,系統上的所有網路程序都通過查詢該文件來解析對應於某個主機名的IP地址。

注 意:tcpd程序是負責檢測telnet、FTP等服務請求的。一旦有服務請求到來,inetd進程將啟動tcpd進程。tcpd在日誌文件中記錄該請 求,並且完成其它一些檢測工作。如果一切正常通過,tcpd將啟動相應的伺服器進程,然後結束。tcpd要通過查詢DNS伺服器,先對該客戶機的IP地址 進行反向解析得到主機名,然後再解析得到該主機名對應的IP地址,接著把得到IP地址和發出請求的客戶機器的IP地址進行比較。通過這些步驟來實現對發送 請求客戶機的驗證。若兩者不匹配,則tcpd認為發出請求的機器偽裝成了其它的機器,並拒絕其請求。這就是為什麼有時候telnet到Linux機器要等 待那麼長時間的原因。通過在「/etc /hosts」中加入客戶機器的IP地址和主機名的匹配項,可以減少登錄等待時間。
tcpd可以設置成禁止源路徑路由(source routing)socket的連接請求。這個設置可以避免黑客用把自己的IP地址偽裝成別的計算機IP地址攻擊伺服器。請注意:這個設置對UDP無效。 當伺服器試圖把請求服務的客戶機的IP地址反向解析成主機名的時候,經常會出現超時(timeout)錯誤。其原因可能是DNS伺服器沒有配置好,或者 DNS根本沒有請求服務的客戶端計算機的任何信息。

配置TCP/IP網路

ifconfig是用來設置和配置網卡的命令行工具。為了手工配置網路,需要熟悉這個命令。使用該命令的好處是無須重新啟動機器。

要賦給eth0介面IP地址208.164.186.2,使用命令:
CODE:
#ifconfig eth0 208.164.186.2 netmask 255.255.255.0

要列出所有的網路介面,使用命令:
CODE:
# ifconfig

這個命令的輸出是這樣的:
CODE:
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

若運行不帶任何參數的ifconfig命令,這個命令將顯示機器所有激活介面的信息。帶有「-a」參數的命令則顯示所有介面的信息,包括沒有激活的介面,例如:
CODE:
# ifconfig -a

這個命令的輸出是這樣的:
CODE:
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命令配置的網路設備參數,機器重新啟動以後將會丟失。要給208.164.186.1配置默認網關,使用命令:
CODE:
# route add default gw 208.164.186.1

在這個例子中,默認網關設置為208.164.186.1。然後,測試一下是否可以連通本網段的機器。從網路上隨便選一台主機,比如:208.164.186.1測試一下。用下面的命令測試一下能否連通這台計算機:
CODE:
#ping 208.164.186.1

輸出會是這樣的:
CODE:
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

現在可以使用route命令輸出路由表信息來查看。

用下面的命令顯示路由信息:
CODE:
# route -n

輸出是這樣的:
CODE:
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

為了快速檢查介面狀態信息,使用netstat -i命令:
CODE:
# netstat -i

輸出是這樣的:
CODE:
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連接:
CODE:
#netstat -t

輸出是這樣的:
CODE:
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

要顯示所有活動和被監聽的TCP連接,使用命令:
CODE:
# netstat -vat

輸出是這樣的:
CODE:
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

要使系統中所有網路介面停止工作,使用命令:
CODE:
# /etc/rc.d/init.d/network stop

要啟動系統中所有網路介面,使用命令:
CODE:
# /etc/rc.d/init.d/network start


[火星人 ] 用Linux命令手工配置TCP/IP網路已經有620次圍觀

http://coctec.com/docs/linux/show-post-134045.html