要能連網,網路裝置首先必須保證處於工作狀態,如果網絡卡沒有開啟,則肯定不能上網的,假設我們使用eth0網絡卡上網,首先檢查該網絡卡是否處於up狀態,使用ip
命令:
#sudo ip link ls eth0
輸出:2: eth0:
mtu 1500 qdisc pfifo_fast state up mode default group default qlen 1000
link/ether 08:00:27:c9:b4:f2 brd ff:ff:ff:ff:ff:ff
state必須處於up
狀態,若處於down
狀態,嘗試手動啟動:
#sudo ip link
set eth0 up
或者#sudo ifconfig eth0 up
手動啟動後,需要再次執行sudo ip link ls
,如果仍然處於down
狀態,則說明是網路硬體問題,比如網線沒有連線好,或者鏈路不通等。如果大家都能上網,極有可能是由於網線接觸不良導致的,拔下網線重新插好,重複以上工作試試。
如果網絡卡已經處於
#sudo ifconfig eth0 或者
sudo ip addr ls eth0
2: eth0:
mtu 1500 qdisc pfifo_fast state up group default qlen 1000
link/ether 08:00:27:c9:b4:f2 brd ff:ff:ff:ff:ff:ff
inet
192.168.1.105/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fec9:b4f2/64 scope link
valid_lft forever preferred_lft forever
以上說明網絡卡已經獲取了ip位址,位址為192.168.1.105/24
,如果輸出為:
3: eth0:
mtu 1500 qdisc pfifo_fast state up group default qlen 1000
link/ether 08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe9a:d5d1/64 scope link
valid_lft forever preferred_lft forever
則說明該網絡卡沒有正確獲取ip。
如果沒有或者ip,就需要配置ip。如果是通過dhcp服務自動獲取ip的,則可手動執行dhclint
獲取ip:
#sudo dhclient -4 -v eth0
如果無法獲取ip,且網絡卡處於up
狀態,則可能是鏈路問題,無法連線遠端dhcp伺服器。如果知道dhcp伺服器位址,可以ping一下試試,比如dhcp伺服器位址為192.168.1.1:
#ping 192.168.1.1
如果icmp被禁了,使用nc
命令或者telnet
更適合,且可以探測埠是否開放,雖然dhcp埠是67,不過通常dhcp和dns伺服器是同一臺機器,因此順便測試53埠:
#nc -zv 192.168.1.1 67
#nc -zv 192.168.1.1 53
# telnet 192.168.1.1 67
# telnet 192.168.1.1 53
如果伺服器的ip不是通過dhcp獲取的動態ip,而是靜態ip,則需要手動設定ip位址,使用ifconfig
配置:
#sudo ifconfig eth0 192.168.1.105 netmask 255.255.255.0
#route add default gw 192.168.1.1 dev eth0
或者#sudo ip addr add 192.168.1.105/24 dev eth0
#sudo route add default gw 192.168.1.1 dev eth0
到此,需要重新執行ip addr ls
或者ifconfig
命令再次檢查是否ip配置正確。
如果網絡卡的ip已經配置正確(包括子網掩碼),仍然不能上網,則需要檢查能否ping通閘道器位址,通常閘道器位址為網路位址的第乙個ip或者最後乙個ip,比如若ip為192.168.1.101/24,則閘道器通常為192.168.1.1或者192.168.1.254,如果不是二者,則需要詢問網管了。假設閘道器位址為192.168.1.1,ping一下是否通:
#ping 192.168.1.1
如果ping不通,則可能是交換機問題。如果閘道器連通性良好,則檢視路由表是否正確,以下三個命令都可檢視路由表,隨便使用乙個:
#sudo route -n
#sudo netstat -rn
#sudo ip route ls
# sudo route -n
kernel ip routing table
destination gateway genmask flags metric ref use iface
0.0.0.0 192.168.1.1 0.0.0.0 ug 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 u 0 0 0 eth0
其中genmask為0.0.0.0
的是預設路由,檢查gateway是否正確。不正確的話需要重新修改預設閘道器:
#sudo route del default eth0 # 先刪除錯誤的預設閘道器
#sudo route add default gw 172.16.0.1 dev eth1 # 填寫正確的閘道器
如果不能連通外網,可以使用tracepath 或者 mtr
命令檢視到底是哪一跳不通:
其中host列是所有經過的跳(路由),可以檢視哪個跳不通或者丟包嚴重。
如果能夠ping通外網,但仍然不能使用瀏覽器上網,那八成是網域名稱解析不了了,即dns伺服器配置有錯誤。檢查下:
#nslookup server
此時會輸出dns伺服器位址,檢查是否正確,若不正確或者不存在,可以臨時設定,修改/etc/resolve.conf
檔案,設定可用的dns伺服器,如果不知道本區的dns伺服器,可以設定通用的`8.8.8.8,可以同時設定多個dns伺服器:
# /etc/resolve.conf# dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# do not edit this file by hand -- your changes will be overwritten
nameserver
219.239.26.42
nameserver
124.207.160.106
nameserver
8.8.8.8
search
dhcp
host
設定完成後,試一下能不能解析網域名稱:
如果能夠解析網域名稱,則應該就可以正常上網了。
我們以上都是通過命令列的方式配置網路,伺服器重啟後,需要重新配置,如果需要儲存狀態,需要寫到配置檔案中去,以ubuntu為例,修改/etc/network/inte***ces
檔案,如果是dhcp 動態ip,配置如下:
# the primary network inte***ce
auto
eth0
# 設定網絡卡開機啟動
iface
eth0
inet
dhcp
# 設定網絡卡動態獲取ip
如果是靜態ip,則配置如下:
auto
eth0
iface
eth0
inet
static
# 設為靜態獲取
ipaddress
192.168.1.101
# 配置ip位址
netmask
255.255.255.0
# 設定子網掩碼
gateway
192.168.1.1
# 設定閘道器
dns-nameservers
8.8.8.8
114.114.114.114
# 設定dns伺服器,多個位址空格隔開
linux網路故障排查
當linux作業系統產生網路故障時,應先從硬體到軟體 從自身到全域性。1,檢查網線 網絡卡。到機房裡檢查網線兩端是否都亮燈,普通伺服器的話應該是綠燈常亮為正常,交換機綠燈閃爍表示正在傳輸資料。也可以通過命令ethtool ethx來檢視某一網絡卡的鏈路是否物理連通。其中,speed是當前網絡卡的速度...
Linux 網路故障排查
1.第一步是要確認網絡卡本身是否工作正常?利用ping工具可以確認這點。輸入ping 127.0.0.1 然後看是否正常ping 通?這裡的127.0.0.1 被稱作主機的回環介面,是tcp ip協議棧正常工作的前提。如果ping 不通,一般可以證實本機tcp ip協議棧有問題,自然就無法連線到網路...
網路故障排查
wireshark抓包工具是一款開源的網路協議分析軟體。工能非常強大,對tcp udp進行抓包分析,是最適合的。如何確診是ip衝突 換乙個ip試試,換了ip之後,再ping原來的那個ip,如果有應答,就能確診是ip衝突。換了ip後,ping原來那個ip無應答,並不能確認不是ip衝突 因為arp表可能...