Linux網絡屬性配置及管理:node
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~linux
一、linux主機接入網絡vim
IP/NETMASK:實現本地通訊centos
路由(網關):實現跨網絡通訊服務器
DNS服務器地址:實現基於主機名的通訊網絡
主DNS服務器地址socket
備用DNS服務器地址tcp
第三備用DNS服務器地址編輯器
注意只有當主DNS掛了或者主機和主DNS之間的通訊中斷時纔會啓用備用DNSide
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二、linux網絡屬性的配置方式
靜態指定:服務器的地址一般都是靜態指定的
命令:
ifcfg家族:
ifconfig:配置IP,NETMASK
route:配置路由
netstat:網絡狀態及統計數據查看
iproute2家族:
ip OBJECT:
addr:配置地址和掩碼
link:管理網絡接口
route:管理路由
ss:狀態及統計數據查看;在有大量網絡鏈接時,ss比netstat命令查看性能更佳
CentOS 7:nm(Network Manager)家族
nmcli:命令行工具
nmtui:text window 文本窗口工具
注意:
(1) DNS服務器指定
配置文件:/etc/resolv.conf
(2) 本地主機名配置
hostname 臨時有效,永久有效需更改配置文件
配置文件:/etc/sysconfig/network
CentOS 7:hostnamectl
配置文件:
RedHat及相關發行版的配置文件:
/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
動態分配:
依賴於本地網絡中有DHCP服務,能夠提供ip地址、子網掩碼、網關、dns
DHCP:Dynamic Host Configure Procotol
網絡接口命名方式:
傳統命名:
以太網:eth#,例如eth0, eth1, ...
PPP網絡:ppp#, 例如ppp0, ppp1, ...
可預測命名方案(CentOS7):
支持多種不一樣的命名機制:
例如基於固件Fireware命名,基於拓撲結構命名等
(1) 若是Firmware或BIOS爲主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1, eno2, ...
(2) 若是Firmware或BIOS爲PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...
(3) 若是硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...
(4) 若是用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10, ...
上述均不可用,則仍使用傳統方式命名;
命名格式的組成:
en:ethernet ,以太網
wl:wlan ,無線局域網
ww:wwan ,無線廣域網
名稱類型:
o<index>:集成設備的設備索引號;
s<slot>:擴展槽的索引號;
x<MAC>:基於MAC地址的命名;
p<bus>s<slot>:基於總線及槽的拓撲結構進行命名
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
三、ifcfg命令家族之ifconfig命令
ifconfig命令:接口及地址查看和管理
顯示:
ifconfig [INTERFACE] 不跟任何參數時只顯示當前主機上全部處於激活狀態的網絡接口信息
# ifconfig -a:顯示全部網絡接口信息,包括inactive狀態的接口;
配置:
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/MASK [up|down] 啓用或關閉指定網絡接口(IFACE:網絡接口名)
# ifconfig IFACE IP netmask NETMASK
options:
[-]promisc 混雜模式,-號表示關閉混雜模式,CentOS 6用,例如ifconfig eth1 promisc
注意:使用ifconfig命令的方式是將命令當即送往內核中的TCP/IP協議棧,並當即生效;
管理IPv6地址:
add addr/prefixlen 添加IPv6地址
del addr/prefixlen 移除IPV6地址
例如:
一、使用ifconfig查看當前主機網絡接口信息;
flags標誌位:UP表示網卡處於啓用激活狀態,BROADCAST表示支持廣播功能,MULTICAST表示支持組播(多播)功能,RUNNING表示處於運行當中,mtu 1500表示網卡支持的最大傳輸單元爲1500Bytes
inet(internet)ipv4地址,netmask子網掩碼,broadcast廣播地址(主機位全爲1的地址,主機號全爲0的是網絡地址)
inet6IPv6地址及其相關信息,ether以太網地址(centos6中標示爲HWADDR),txqueuelen 1000 (Ethernet)表示以太網傳輸隊列長度
RX表示接收,packets 25155表示網卡在激活後接收到的網絡報文的數量爲25155個,報文的總大小爲3222168Bytes,換算後的大小是3Mb
RX errors 0 表示接受到的網絡報文的錯誤個數爲0,dropped表示丟包的數量(若是有大量丟包,說明網絡有問題),overruns 0表示溢出的包的個數爲0,frame幀,應重點查看errors和dropped
TX表示發送,packets 133表示網卡在激活後發送出的網絡報文的數量爲133個,報文的總大小爲
14555Bytes,換算後的大小是14.2Kb
TX errors發出包時的錯誤個數 ,丟包數,collisions衝突個數等,一樣應關注錯誤和丟包數
二、也可使用ifconfig直接加網卡名稱查看指定網絡接口信息
三、顯示當前主機全部網絡接口信息,包括未激活的網絡接口信息
四、爲未激活的網絡接口配置ip地址,然後再用ifconfig命令就能夠查看到其信息了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
四、ifcfg命令家族之route命令
route命令:路由查看及管理
路由條目類型:
主機路由:目標地址爲單個IP;
網絡路由:目標地址爲IP網絡;
默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0
查看:
# route -n 查看路由條目時以數字格式顯示各地址
添加:
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]
[-net|-host]:網絡路由或主機路由,默認路由即任意網絡
target:目標網絡地址
[netmask Nm]:子網掩碼,netmask後輸入具體的子網掩碼
[gw GW]:網關地址,gw後輸入下一跳即網關的地址
[[dev] If]:網絡接口
示例:route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1
route add default gw 192.168.10.1
刪除:
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例: route del -net 10.0.0.0/8 gw 192.168.10.1
route del default
例如:
一、查看當前主機的路由條目
在CentOS6中直接使用route顯示地址時會將將每一個地址反解析成主機名,當網絡中若是有大量的路由條目時,並且有不少是指向單機的狀況下,反解析成主機名效率會很是低,所以在查看路由條目時,不建議將地址反解析成主機名查看
Destination即target目標網絡地址
Gateway下一跳即網關地址,網關是0.0.0.0表示對應的Destination是本地主機的網絡地址,即和本身的主機處於同一子網,所以無需網關
Genmask即目標網絡的子網掩碼
Flags是對應段的路由條目的標誌,U表示up啓用狀態,G表示是網關,有效下一跳地址均可以表示是網關,只有Destination是0.0.0.0是對應的網關纔是默認網關
Metric是度量值,即到達目標網絡中間要通過的開銷
二、添加一個通過192.168.10.1的下一跳地址到達10.0.0.0/8的網絡的路由條目,注意在添加下一跳時,下一跳的地址必須與本機的某個網絡接口處於同一網段,若是不加dev指定網絡接口,會自動判斷
三、添加一個地址爲192.168.10.1的默認網關,指定default或者0.0.0.0/0.0.0.0均可以
四、刪除示例2中添加的路由條目,刪除時若是隻有一個指定網段的路由能夠不用指定下一跳的地址
五、刪除默認網關,default或者0.0.0.0/0.0.0.0均可以
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
五、ifcfg命令家族之netstat命令
netstat命令:
Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
顯示路由表:netstat -rn
-r:顯示內核路由表
-n:以數字格式 顯示
顯示網絡鏈接:
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t:TCP協議的相關鏈接,tcp鏈接均有其鏈接狀態;有限狀態機FSM(Finate State Machine)
-u:UDP協議相關的鏈接
-w:raw socket(裸套接字)相關的鏈接
-l:處於監聽狀態的鏈接
-a:查看全部狀態
-n:以數字格式顯示IP和Port;
-e:查看擴展格式
-p:顯示相關的進程及其PID;
經常使用組合:
-tan, -uan, -tnl, -unl, -tunlp
傳輸層協議: 傳輸層協議決定了網絡傳輸過程的特性
tcp:面向鏈接的協議;通訊開始以前,要創建一個虛鏈路進行通訊;通訊完成後還要拆除鏈接;
udp:用戶數據報協議,無鏈接的協議;直接發送數據報文,無需創建虛鏈路,無鏈接狀態;
顯示接口的統計數據:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p] [--numeric|-n]
全部接口: netstat -i
指定接口: netstat -I<IFace> 注意中間不能有空格
例如:
一、用netstat命令查看路由表,跟route -n效果類似
二、以數字格式顯示tcp協議的相關鏈接
Proto表示使用什麼協議,Recv-Q表示接收隊列,Send-Q表示發送隊列,隊列的大小即表示隊列等待的長度,Local Address即本機地址,Foreign Address即遠程地址,172.16.0.1:57726表示鏈接172.16.0.1這臺主機的57726端口,State即鏈接狀態
三、查看基於UDP協議處於監聽狀態的鏈接,即等待訪問的鏈接,不加l表示已經創建的鏈接
四、查看基於TCP協議處於監聽狀態的鏈接,能夠看到狀態爲LISTEN,表示正在監聽
五、查看基於TCP、UDP處於監聽狀態,且顯示相關的進程及其PID,以數字格式顯示的鏈接
七、以擴展格式顯示TCP協議的正在通訊的鏈接
User表示由本地哪一個用戶啓動的此進程
Inode表示對應的套接字文件的Inode號,Linux哲學之一是一切皆文件,因此網絡鏈接也是經過文件來實現的,這個文件就叫作套接字文件,每創建一個鏈接,都要打開一個套接字文件來保存鏈接的狀態
八、顯示全部網絡接口的相關統計數據,ifconfig也能看到相關的數據
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
六、ifcfg命令家族之ifup/ifdown命令
ifup/ifdown命令: 啓用或禁用網絡接口
注意:經過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
七、配置主機名
hostname命令:
查看:hostname
配置:hostname HOSTNAME
當前系統有效,重啓後無效;永久生效需更改配置文件
hostnamectl命令(CentOS 7):
hostnamectl status:顯示當前主機名信息;
hostnamectl set-hostname [NAME]:設定主機名,永久有效;
配置文件:/etc/sysconfig/network
HOSTNAME=<HOSTNAME>
注意:此方法修改配置文件的設置不會當即生效; 但重啓後會一直有效;
例如:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
八、配置DNS服務器指向
配置文件:/etc/resolv.conf
nameserver DNS_SERVER_IP 注意必定要寫成ip地址
測試dns是否有效(命令測試host/nslookup/dig):
# dig -t A FQDN -t表示將主機名轉換爲ip地址,dig命令測試dns是否生效時不會檢查hosts
FQDN --> IP FQDN:主機名
# dig -x IP 將ip地址反解成主機名,互聯網上大多數主機名都不支持反向解析
IP --> FQDN
主機解析主機名的時候,會首先查找本地hosts文件;若是在hosts文件中查找到相應主機名解析,則不會再從dns查找;不然,才經過dns查找解析
例如:
二、設置hosts文件,添加解析,每一個主機名能夠有多個別名,彼此間以空格隔開
三、使用ping命令就能夠查看到www.magedu.com被解析到172.16.100.6了,ping別名亦可
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
九、iproute命令家族之ip命令
ip命令:
show / manipulate routing, devices, policy routing and tunnels
查看及管理路由,設備,策略路由和隧道等相關功能
使用格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注意: OBJECT可簡寫,各OBJECT的子命令也可簡寫;例如ip link show可寫成ip li sh
ip OBJECT(管理對象):ip link;ip netns;ip address;ip route 均可以使用子命令顯示簡要使用幫助,例如ip link help;ip netns help等
(1)ip link相關命令
ip link: network device configuration 管理網絡設備配置
ip link set - change device attributes 修改設備屬性
dev NAME (default):指明要管理的設備,dev關鍵字可省略(只寫接口名便可);
up和down:啓用或禁用網絡接口
multicast on或multicast off:啓用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:設置MTU的大小,默認爲1500;
netns PID:ns爲namespace,用於將接口移動到指定的網絡名稱空間(CentOS 7);
ip link show - display device attributes 顯示設備屬性,或使用ip link list
ip link help - 顯示簡要使用幫助;
例如:
一、顯示當前主機的設備屬性,查看的是二層設備屬性,跟ip地址無關
qdisk:隊列 pfifo_fast:隊列類型 state:狀態 qlen:支持的隊列長度
二、使用ip link set up/down啓用或禁用網卡
四、重命名網絡接口的名字爲eno11112222,注意重命名時要先禁用接口
(2)ip netns相關命令
ip netns: - manage network namespaces.管理網絡名稱空間(CentOS 7)
ip netns list:列出全部的netns
ip netns add NAME:建立指定的netns
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
例如:
一、使用ip netns add命令添加一個網絡名稱空間,將網卡移至其網絡名稱空間內,然後再查看
二、在指定的netns中運行ip link show命令查看其內部的接口信息
三、使用ip netns del刪除指定的網絡名稱空間,其內的接口就自動釋放了
(3)ip address相關命令
ip address - protocol address management.管理網絡接口
ip address add - add new protocol address 添加新的ip地址
ip addr add IFADDR dev IFACE 添加ip地址到指定網絡接口上
[label NAME]:爲額外添加的地址指明接口別名;添加label後才能用ifconfig看到
[broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算獲得;
[scope SCOPE_VALUE]:做用域(生效範圍)
global:全局可用;能夠跟全部主機通訊
link:接口可用;沒法跟本機外的地址通訊
host:僅本機可用;只能在本機內部使用,其餘主機將沒法看到此地址
ip address delete - delete protocol address 刪除指定接口的ip地址
ip addr delete IFADDR dev IFACE
ip address show - look at protocol addresses 顯示指定接口的ip地址
ip addr list [IFACE]
ip address flush - flush protocol addresses 清空指定接口上的全部的ip地址
ip addr flush dev IFACE
例如:
二、向eno33554960接口添加一個ip地址,查看接口信息
三、向eno33554960接口再次添加一個ip地址,能夠看到這個地址的狀態爲secondary
四、向eno33554960接口再次添加一個ip地址,指明label爲eno33554960:0
五、添加接口別名後就可使用ifconfig命令看到其信息了,沒有label用ifconfig將沒法顯示
(4)ip route相關命令
ip route - routing table management 管理路由表
ip route add - add new route 添加新的路由
ip route change - change route 修改路由
ip route replace - change or add new one 修改已有或添加新的路由,有則改,無則加
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
ip route delete - delete route 刪除路由
ip route del TYPE PRIFIX
ip route show - list routes 顯示路由
TYPE PRIFIX
ip route flush - flush routing tables 清空路由
TYPE PRIFIX
ip route get - get a single route 獲取指定的單條路由
ip route get TYPE PRIFIX
例如:
二、添加一個經由10.0.0.1的網絡到達192.168.0.0的網絡的路由,via即網關地址,不指定源地址將自動選擇一個網關網段內的ip地址與目標網段通訊
三、添加一個eno33554960上源地址爲10.0.20.100下一跳地址爲10.0.0.1到達192.168.1.0的網絡的路由
四、在eno16777728接口上添加一個網關爲172.16.0.1的默認路由
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
十、iproute命令家族之ss命令
ss - another utility to investigate sockets 取代netstat的工具
ss [options] [ FILTER ]
選項:
-t:TCP協議的相關鏈接
-u:UDP協議相關的鏈接
-w:raw socket相關的鏈接
-l:監聽狀態的鏈接
-a:全部狀態的鏈接
-n:以數字格式 顯示
-p:相關的程序及其PID
-e:顯示擴展格式信息
-m:顯示內存用量
-o:顯示計時器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ] 顯示指定鏈接狀態的鏈接信息
TCP的常見狀態:
TCP FSM: TCP有限狀態機
LISTEN:監聽
ESTABLISEHD:創建的鏈接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
EXPRESSION:
dport = 指定目標端口
sport = 指定源端口
示例:
'( dport = :22 or sport = :22)'
~]# ss -tan '( dport = :22 or sport = :22 )'
~]# ss -tan state ESTABLISHED
例如:
二、查看TCP協議的全部鏈接中狀態爲ESTABLISEHD的鏈接
三、查看TCP協議的全部鏈接中源端口或目標端口爲22端口的鏈接
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
十一、網絡屬性配置文件管理
經過修改配置文件配置網絡屬性,對於redhat系的linux,每一個網絡接口的相關信息若是要永久有效,都必須經過讀取其配置文件來完成網絡屬性的配置;
使用ifconfig或ip命令等修改的網絡屬性,重啓系統之後都將會失效,永久有效需寫在配置文件中
使用route或ip route命令所添加的路由條目,重啓系統之後也都會失效,永久有效需寫在配置文件中
配置文件:
IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
IFACE:接口名稱;
路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE經過大量參數來定義接口的屬性;其可經過vim等文本編輯器直接修改,也可使用專用的命令的進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui),注意setup和nmtui也是修改配置文件,修改後需重啓網絡服務生效
ifcfg-IFACE配置文件參數:
DEVICE:此配置文件對應的設備的名稱; 要和IFACE名字保持一致
ONBOOT:在系統引導過程當中,是否激活此接口;
UUID:此設備的唯一標識;
IPV6INIT:是否初始化IPv6;
BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,經常使用的有dhcp、bootp、static、none;
TYPE:接口類型,常見的有Ethernet, Bridge;
DNS1:第一DNS服務器指向;
DNS2:備用DNS服務器指向;
DOMAIN:DNS搜索域;
IPADDR: IP地址;
NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼;
GATEWAY:默認網關;
USERCTL:是否容許普通用戶控制此設備;
PEERDNS:若是BOOTPROTO的值爲「dhcp」,是否容許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲容許;
HWADDR:設備的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服務來控制接口;
網絡服務:
network
NetworkManager 在CentOS 6中功能不完善,建議使用network
管理網絡服務:
CentOS 6: service SERVICE {start|stop|restart|status}
CentOS 7:systemctl {start|stop|restart|status} SERVICE[.service]
配置文件修改以後,若是要生效,須要重啓網絡服務;
CentOS 6:# service network restart
CentOS 7:# systemctl restart network.service
任什麼時候候重啓網絡服務會清空接口地址並從新讀取配置文件來配置地址及相關屬性
例如:
二、爲eno33554960添加配置文件後就能夠經過配置文件對其管理了
三、修改配置文件後,重啓網絡服務後配置文件即會生效
須要用到其餘手動指定的非默認網關路由時,定義永久有效需修改配置文件
用到非默認網關路由:/etc/sysconfig/network-scripts/route-IFACE
支持兩種配置方式,但不可混用;
(1) 每行一個路由條目:
TARGET via GW
(2) 每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
例如:
添加接口別名後就可使用ifconfig命令看到其接口信息,沒有label用ifconfig將沒法顯示
給接口配置多個地址:
ip addr以外,ifconfig或配置文件均可以;僅配置文件定義後纔會永久生效
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0, eth0:1, ...
(2) 爲別名網卡添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO:只能是static, none;別名網卡不支持動態獲取地址;
例如:
一、爲eno33554960接口添加額外的ip地址,添加後使用ifconfig命令可顯示其信息
二、使用ifconfig命令定義的地址當即生效,但重啓網絡服務後就無效了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
十二、nmcli命令(CentOS 7)
nmcli命令:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces 顯示及管理網絡接口,相似ip link
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
connection - start, stop, and manage network connections 管理網絡接口
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value> 修改網絡接口屬性
如何修改IP地址等屬性:
# nmcli conn modify IFACE [+|-]setting.property value
setting.property:
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method 配置方法,manual表示靜態地址
manual
例如:
一、顯示全部的網絡接口信息,注意別名都顯示爲地址[1]地址[2]地址[3]...