Linux學習之基礎知識——網路管理的基本命令
概述
隨著網際網路和物聯網的不斷髮展,網路已經成為人們生活中必不可少的配置。而在Linux中,網路管理也是必不可少的技能之一,沒有網路,系統所提供的各項服務就無從施展。本篇重點從ifconfig、route、netstat、三個命令,介紹Linux中的網路配置。最後再實驗用三個Linux系統作為路由器,串聯在兩端的另外兩個Linux系統能夠互相通訊。
ifconfig命令
ifconfig命令用於配置和顯示Linux核心中的網路介面引數。在配置引數時,只是臨時配置該引數,在系統或者網絡卡重啟後,會丟失該引數。若需要儲存配置,則需要修改/etc/sysconfig/net-scripts/ifcfg-eth#(CentOS6)
語法:
ifconfig [選項] [裝置] [引數]
常用選項:
add <ipv6> 為網絡卡設定ipv6地址
del<ipv6> 刪除ipv6地址
down dev 禁用該網絡卡
up dev 啟用該網絡卡netmask <netmask> 設定子網掩碼
hw <網路裝置型別> <MAC> 重新設定MAC地址。只是模擬了新的Mac地址,實際上網絡卡的MAC是沒有改變的!
-a 顯示所有的網路資訊,包括已經禁用的網絡卡。只執行ifconfig是不顯示未啟用網絡卡的!
-s 以短格式顯示資訊
[-]arp 在裝置上啟用或禁用ARP
例
ifconfig檢視網路配置
ifconfig -s 以短格式檢視網路配置
配置新的ip地址
]# ifconfig eth0 192.168.5.123/24
]# ifconfig eth0 192.168.5.123 netmask 255.255.255.0
修改MAC
]# ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
禁用啟用網絡卡
]# ifconfig eth0 down
]# ifconfig eth0 up
開啟關閉網絡卡ARP功能
]# ifconfig eth0 arp #開啟網絡卡eth0 的arp協議 ]# ifconfig eth0 -arp #關閉網絡卡eth0 的arp協議
另外,網絡卡名也是可以修改的。在CentOS6中存放網絡卡名的檔案為/etc/udev/rules.d/70-persistent-net.rules,在修改完網絡卡名後,需要解除安裝網絡卡驅動並重新載入,才能使設定生效。而在CentOS7中則不同:
使用傳統命名方式:
(1) 編輯/etc/default/grub配置檔案
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"或:修改/boot/grub2/grub.cfg
(2) 為grub2生成其配置檔案
grub2-mkconfig -o /etc/grub2.cfg
(3) 重啟系統或重新載入驅動。
Linux中網絡卡驅動是以模組形式載入的。檢視網絡卡驅動:
]# ethtool eth0 #檢視eth0的驅動
查詢得知在本機中網絡卡驅動模組名為e1000。
解除安裝eth0的驅動:
]# modprobe -r e1000
或
]# rmmod e1000
載入驅動:
]# modprobe e1000
route命令
route命令用於顯示和配置Linux核心中的路由表。route命令設定的是靜態路由。要實現兩個網路間的通訊,需要與兩個網路連線的路由器或者同時連線兩個子網的閘道器來實現。通過route命令配置的路由表是無法儲存的,在系統或者網絡卡重啟之後會丟失。若要長久儲存配置,則需要修改/etc/rc.local檔案。
語法:
route [選項] [引數]
常用引數:
-A: 設定路由地址的型別
-C: 顯示Linux核心的路由快取-n: 不執行DNS反向查詢,直接顯示數字形式的IP地址
-v: 顯示詳細資訊
-e: netstat格式顯示路由表
-net: 設定網路路由
-host: 設定主機路由
add : 新增路由
del : 刪除路由
例
檢視核心路由表
新增路由
刪除路由
遮蔽一條路由
]# route add -net 192.165.6.0/24 reject #增加一條遮蔽的路由,目的地址為192.168.6.x的請求將被拒絕
netstat命令
netstat命令通常用來檢視當前的整個網路狀況。
語法:
netstat <選項>
常見選項:
-t: tcp協議相關
-u: udp協議相關
-w: raw socket相關
-l: 處於監聽狀態
-a: 所有狀態
-n: 以數字顯示IP和埠;
-e: 擴充套件格式
-p: 顯示相關程序及PID
通常情況下選項都是組合使用的,以同時顯示更多需要的資訊。常用組合為:-tan, -uan, -tnl, -unl
檢視核心路由表:
netstat {--route|-r} [--numeric|-n]
-r: 顯示核心路由表
-n: 數字格式
例:
檢視TCP協議的通訊
查詢核心路由表
常用組合命令的查詢
路由搭建
在實驗中,由三個Linux系統充當路由器,兩個Linux系統充當主機,五個系統串聯至四個不同的網路中,使得在兩端的主機能夠互相通訊。由於五個系統都是在虛擬機器中執行,直接在虛擬機器的虛擬網路編輯器中新增四個不同的網路,並將五個主機的兩個網絡卡分別置於這四個網路中。拓撲圖如下:
虛擬網路編輯器的配置如下圖:
檢視CA的IP地址
配置主機CA的ip
檢視主機CA的路由表並配置路由。
由於主機CA位於網路邊沿,所以其路由配置預設路由即可。另一邊的主機CB亦同。配置完成後主機CA的配置就完成了。接下來是路由器R0的配置。
檢視並配置R0的ip
檢視R0的路由表
配置R0的路由表
開啟R0的路由轉發功能。修改/proc/sys/net/ipv4/ip_forward內容為1
至此R0的配置就完成了。接下來是RA的配置。
檢視並配置RA的ip
檢視並配置RA的路由表
開啟RA的路由轉發功能
檢查RA與C0之間能否通訊
通過相互的ping發現能夠通訊,說明前面的配置沒有問題。實際上應該每配置一步就檢查配置是否配置成功。此時RA的配置已經完成,接下來是RB的配置。
檢視並配置RB的ip
檢視並配置RB的路由表
開啟RB的路由轉發功能
檢查RB與C0能否ping通
通過互ping發現二者能夠通訊,即前面配置成功,接下來就是CB的配置。
CB的配置與CA類同,不過CA事先置入了兩塊網絡卡,其中一塊(ens33)因為與R0配置在同一網路中,會對實驗形成干擾所以會禁用它。
禁用ens33
]# ifconfig ens33 down
檢視並配置CB的ip.可以看到網絡卡ens33已經被禁用。
檢視並配置CB的閘道器
最後,通過CA和CB的互ping,檢查整個路由配置是否成功。
最後兩個主機互ping,可以發現能夠ping通,即整個網路配置沒有問題。可以看到,雙方互ping的TTL均為61,即執行ping命令是傳送的資料包通過了(64-61=)3個路由器,與拓撲圖中設計的無誤。
若是在最終的檢測中,發現某一方不能ping通,則應逐個路由器進行測試,檢查主機和路由器的ip、閘道器、路由表等配置是否正確,還有充當路由器的主機路由轉發功能是否開啟。最好的辦法是,隨配隨測,過程較慢,但勝在準確性較高。
最後,在配置過程中,系統最好都關閉防火牆和selinux策略,以避免不必要的問題。關閉的方法如下:
修改selinux策略為permissive或者disabled
]# vim /etc/selinux/config
]# setenforce 0 #關閉selinux
]#getenforce #檢視狀態
關閉防火牆:
centos7:
]# systemctl stop firewalld #立即關閉防火牆
]# systemctl disable firedwalld #關閉開機自動啟動
centos6:
]# chkconfig iptables off #開機不啟動
]# server iptables stop #關閉防火牆