一、Linux網絡指令分類
二、ifcfg家族
三、iproute2家族
四、nmtui家族
五、TCP FSM
分類:
1.ifcfg家族://net-tools
ifconfig:配置ip,netmask,gateway
route:配置網關和路由
netstat:網絡狀态及統計資料的檢視
其他指令:
====================================
netstat ifconfig route arp
ether-wake slattach ipmaddr iptunnel
mii-diag mii-tool nameif plipconfig
2.iproute2家族
ip OBJECT:
addr:位址和掩碼配置
link:接口
route:路由
ss:統計
ifstat :檢視接口狀态資料
其他指令:
==================================
ip ifcfg ifstat ss tc
arpd bridge lnstat nstat cbq ctstat devlink genl
routef routel rtacct rtmon rtpr rtstat
3.Centos7:nm(network manager)家族//指令修改配置檔案
nmcli:指令行工具
nmtul:text windows工具
nm nm-connection-editor nmtui-connect
nmblookup nm-online nmtui-edit
nmcli nmtui nmtui-hostname
1.ifconfig
txqueue:傳輸隊列長度
RX errors 0 dropped 0 overruns 0 frame 0
RX:收到的包,drop丢失的包,overruns:溢出的,frame:幀
ifconfig [INTERFACE] [up|down]
-a //顯示所有的接口,包括未激活的
-s //顯示摘要資訊
ifconfig IFACE ip/mask up
ifconfig eth0 10.0.0.1/24 up
ifconfig iface ip netmask NETMASK
[-]allmulti //啟用多點傳播,-關閉
[-]promisc //混雜模式
[-]arp
mtu N
add addr/prefixlen //管理ipv6位址
del addr/prefixlen
txqueuen length //傳輸隊列 長度
注意:一個網卡設定兩個ip
ifconfig eno16777736:1 192.168.3.150 netmask 255.255.255.0 up
ifconfig eno16777736:3 192.168.3.128/24 up
2.route:路由檢視及管理
主機路由:目标位址為單個ip
網絡路由:目标位址為IP網絡
預設路由:目标為任意主機,0.0.0.0/0.0.0.0
-n //numberic address,顯示數字,而不顯示域名
U :up狀态
UG :up且是網關
Metric:路徑成本,話費的開銷
iface:經過本地的接口
route [-A family |-4|-6] add [-net|-host] target
[netmask Nm] [gw Gw] [metric N] [[dev] If]
route [-A family |-4|-6] del [-net|-host]
target [gw Gw] [netmask Nm]
[metric N] [[dev] If]
-A family //區分v4和v6
route add default gw 10.0.0.1
route add 10.0.0.0/24 gw 10.0.0.1 [ dev eth0 ] //dev可以省略
route del -net 10.0.0.0/24
route del default //删除預設網關
3.netstat 指令
netstat - Print network connections, routing tables, interface statistics,
masquerade connections, and multicast memberships
路由:
-r :顯示路由表
-n :數字顯示
網絡狀态
-t ;tcp -u ; udp;-U;--update -S;--sctp --raw;-w
sctp:比tcp功能更強悍,更安全,更不容易導緻阻塞
-U:一種更新版本的udp
TCP的相關連接配接,連接配接均有其狀态;FSM(Finate State Machine)
-l;listening,監聽狀态
-a ;所有狀态的連結
-n;number-show
--numeric-ports:隻把端口數字顯示
--numeric-hosts:隻把主機數字顯示
-e:顯示擴充字段的資訊
-p:顯示相應的程式
-w:raw socket相關的連結,裸套接字
-v;詳細
[root@MT ~]# netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.3.117:22 192.168.3.112:52083 ESTABLISHED
tcp 0 52 192.168.3.122:22 192.168.3.112:53521 ESTABLISHED
//Recv-Q接受隊列,
netstat -un //隻顯示已經建立的udp連結
netstat -tae //所有狀态的tcp連結
netstat -unl //監聽狀态的
顯示接口的統計資料://表格形式
netstat {--interfaces|-I|-i} [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p]
[--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users]
[--continuous|-c] [delay]
-e //拓展
-p //顯示相應的程式
-i //所有接口
-I //指定接口 netstat -Ieno16777736
-a //所有狀态
顯示統計資訊:
netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [delay]
netstat -su //分别統計,文檔方式
TCP:面向連結的協定,通信開始之前,要建立一個虛鍊路;通信完成後拆除虛鍊路
UDP:無連接配接的協定,直接發送資料封包
4. [ifup|ifdown] 接口
注意:通過配置檔案/etc/sysconfig/network-script/ifcfg-IFACE來識别接口并完成配置
ifconfig eth0 [up|down]
5.hostname和dns配置
臨時有效
hostname
hostname HOSTNAME
永久有效
hostnamectl set-default HOSTNAME
hostnamectl status //檢視主機名狀态資訊
nmtui-hostname
/etc/sysconfig/network CENTOS6
HOSTNAME=主機名
配置DNS:/etc/resolv.conf
nameserver DNS_SERVER_IP //最多三個
/etc/hosts //本地的解析檔案,先找hosts找不到,然後找dns
測試DNS
dig -t A www.baidu.com
dig -x 10.0.0.1 //反向解析
1.ip //檢視和管理路由,裝置,政策路由,以及隧道
ip [ OPTIONS] OBJECT COMMAND
OBJECT={link | addr | route | netns|....} //object可以簡寫,object的子指令也可以簡寫
link set [dev] eth0 down|up //改變網絡屬性
set arp on|off //啟用或者禁用arp
set multicast on|off //啟用或者禁用多點傳播
set name //修改名字
ip link set lo name eth0//需要先down才能修改名字
set mtu,預設為1500
set txqlen
link show|list [eth0] //檢視裝置屬性
ip li sh //相當于ip link show
注意:man ip-link,man ip-route
ip link help //檢視簡單幫助資訊
netns //ip netns help :ns namespace命名空間
ip netns add mynet
ip netns list //列出所有的netns
ip link set eno16777736 netns mynet //移動到該空間
ip netns exec mynet ip link show //在netns中運作該指令
ip netns del mynet //删除該命名空間
addr //man ip-address
add:ip addr IFADDR dev IFACE
ip addr add eth0 192.168.0.1/24 dev eth1
ip addr add 192.168.0.2/24 dev eth0 //添加多塊位址
ip addr list eth0 //隻能用這個指令檢視備用ip位址
注意:ifconfig預設不能顯示該位址
ip addr add 192.168.0.4/24 label eth0:2 dev eth0 //添加标簽
注意:ip addr隻有添加标簽後,ifconfig才能看見
scope 作用域:
global:全局可用
site:
link:接口可用,外部的其他接口不可用。自己ping自己可以,隻用于自己和自己通信
host:隻在本機内部是可用的
del:
ip addr del IFADDR/prefix dev eth0
flush: //清空所有的ip位址
ip addr flush dev eth0
show [eth0]
route
ip route { add | del | change | append | replace } ROUTE
ip route add TYPE PREFIX via gw [dev IFACE] [src SOURCE_IP]
ip route change
ip route replace
to TYPE PREFIX (default) //to:到達指定目标,
//TYPE:目标可以使主機路由,或者網絡路由等
//PREFIX:掩碼字尾
dev //本地出接口
via ADDRESS //下一跳
src ADDRESS //源位址
ip route add 192.168.0.0/24 via 10.0.0.1 dev eth0
ip route add 192.168.1.0/24 via 10.0.0.1 dev eth0 src 10.0.0.120 //假如有多個位址的話,可以指定源位址
ip route add default via 192.168.0.1 dev eth0
//replace和change都是一樣的
ip route delete
ip route delete 192.168.0.0/24
ip route show|list
src|to
ip route show src 192.168.3.124
ip route show to 192.168.1.0/24
ip route flush //清空所有路由表
ip route flush 192.168.1/24 //清空192.168.1.0的所有路由
ip route get
to|from|iif|oif ADDRESS
2.ss:另一個現實socket的資料的
ss [option] [FILTER]
-t:tcp -u:udp -l:listening -a:all -n:numeric -r:resolve解析
-e:extend的套接字資訊 -m:memory -p:process -s:summary
-4|-6 -d:dhcp -w:raw裸套接字 -o:timer計時器資訊
FILTER:[state TCP-STATE] [EXPRESSION] 過濾器
//UDP是沒有狀态的
TCP的常見狀态:
TCP FSM:
listen:監聽,ESTABLISHED:已建立的連結,
FIN_WAIT_1:一方啟動,等待對方
FIN_WAIT_2:分手的時候,一方分手,一方确認
SYN_SENT:
SYN_RECV:
CLOSED:
EXPRESSION:
dport=
sport=
示例:‘( dport = 22 or sport = :22 )'
ss -tan state ESTABLISHED '( sport = :22 )'
ss -tan '( sport = :22 or dport = :22 )'
ss -o state established
配置檔案 :
IP/NETMASK/GW/DNS等屬性配置檔案:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由的配置檔案:/etc/sysconfig/network-scriptes/route-IFACE
1.配置檔案:/etc/sysconfig/network-scripts/ifcfg-IFACE通過大量參數來定義接口的屬性
專用修改:
system-config-network(setup) //Centos6:
nutui //Centos7
配置檔案參數:cat ifcfg-eno16777736
TYPE=Ethernet //接口類型,常見的有Ethernet,bridge
BOOTPROTO=dhcp //引導時使用什麼協定來配置接口protocol
//常見的有:dhcp,bootp,static,none//後面兩個都是靜态的
DEFROUTE=yes //是否為預設路由使用的接口
DNS1=192.169.0.1 //第一個DNS伺服器指向
DNS2 //備用DNS
DOMAIN=test.com //目前DNS搜尋域
IPADDR=192.168.0.1 //和BOOTPROTO沖突,隻能使用一個
NETMASK=255.255.0.0 //子網路遮罩,Centos7支援以長度方式指明子網路遮罩
GATEWAY=10.0.0.1 //預設網關
USERCTL=yes/no //是否允許普通使用者控制此裝置,預設為no
PEERDNS=yes //預設yes;如果BOOTPROTO的值為’dhcp‘,是否允許dhs server配置設定的dns伺服器指定,覆寫手動修改的dns
NM_CONTROL=no/yes //是否使用NewworkManager服務來控制此檔案,系統開機時會通過該服務讀取網絡配置新
網絡服務:
network //穩定Centos6,建議使用
networmanager //不太完善,實驗階段,是Centos6的話,建議關閉該服務,并改為no
chkconfig --list //檢視該服務是否啟用
HW_ADDR
PEERROUTES=yes
NETBOOT=yes //是否支援網絡引導
IPV4_FAILURE_FATAL=no
IPV6INIT=yes //是否初始化ipv6
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=42abd456-f5b8-4311-badc-c6a6827e318d //裝置的唯一辨別
DEVICE=eno16777736 //次裝置檔案對應的裝置的名稱
ONBOOT=no //開機啟用yes/no
2.管理網絡服務:
Centos6:service SERVICE {status|stop|start|restart}
Centos7:
對配置檔案修改之後,如果要生效,需要重新開機網絡服務
service network restart
[root@MT network-scripts]# cat ifcfg-eno16777736 //手動指定Centos7,ip位址
TYPE=Ethernet #
BOOTPROTO=none #
DEFROUTE=yes
IPV6INIT=no
NAME=eno16777736 #
DEVICE=eno16777736 #
ONBOOT=yes #
IPADDR=192.168.3.124 #
PREFIX=24 //可以這樣用NETMASK
systemctl restart network.service
3.用到非網關預設路由:/etc/sysconfig/network-scripts/route-IFACE
支援兩種配置方式,但不可混用
(1)每行一個路由條目
TARGE via GW
(2)每三行一個路由條目
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
添加靜态路由風格1:
vim /etc/sysconfig/network-scripts/route-eno16777736
192.168.10.0/24 via 192.168.3.1
192.168.100.0/24 via 192.168.3.1
systemctl restart network.service
添加靜态路由風格2:
ADDRESS0=20.0.0.0
NETMASK0=255.255.0.0
GATEWAY0=192.168.3.1
ADDRESS1=30.0.0
NETMASK1=255.255.0.0
GATEWAY1=192.168.3.1
ADDRESS1=0.0.0.0
NETMASK1=0.0.0.0
4. ip addr 之外,ifconfig或配置檔案都可以
(1)ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:1,eth0:2,...
(2)永久添加多個位址
cp ifcfg-eno16777736 ifcfg-eno16777736:0
vim ifcfg-eno16777736:0
TYPE=Ethernet
BOOTPROTO=none //不能為dhcp等動态,隻能手動指定,static或者none
DEFROUTE=yes
IPV6INIT=no
DEVICE=eno16777736:0
ONBOOT=yes
IPADDR=192.168.3.110
PREFIX=24
nmcli指令
nmctl [options] OBJECT {COMMAND|help}
device :顯示和管理網絡接口
nmctl device show|status|disconnect|connect
connection:COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
nmcli conn show
edit //修改各種屬性
nmcli conn modify eno16777736 +ipv4.address 192.168.0.100
nmcli conn up eno16777736
如何修改IP位址等屬性
nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual
使用nmtui就行了,nm指令比較難用
五、TCP FSM
附件:tcp FSM :TCP Finite State Machine //TCP的有限狀态機制
CLOSED 呈阻塞、關閉狀态,表示主機目前沒有活動的傳輸連接配接或正在進行傳輸連接配接
LISTEN 呈監聽狀态,表示伺服器正在等待新的傳輸連接配接進入
SYN RCVD 表示主機已收到一個傳輸連接配接請求,但尚未确認
SYN SENT 表示主機已經發出一個傳輸連接配接請求,等待對方确認
ESTABLISHED 傳輸連接配接建立,通信雙方進入正常資料傳輸狀态
FIN WAIT 1(主動關閉)主機已經發送關閉連接配接請求,等待對方确認 //我已發送關閉請求
FIN WAIT 2(主動關閉)主機已收到對方關閉傳輸連接配接确認,等待對方發送關閉傳輸連接配接請求 //已經收到對方關閉确認,等待對方關閉傳輸請求
TIMED WAIT 完成雙向傳輸連接配接關閉,等待所有分組消失 //等待分組完成
CLOSING 雙方同時嘗試關閉傳輸連接配接,等待對方确認 //等待對方确認
CLOSE WAIT(被動關閉)收到對方發來的關閉傳輸連接配接請求,并已确認 //被
LAST ACK (被動關閉)等待最後一個關閉傳輸連接配接确認,并等待所有分組消失
<a href="https://s2.51cto.com/oss/201710/29/b6ffc5cc711700af092f8c7b82e785c4.png" target="_blank"></a>
本文轉自MT_IT51CTO部落格,原文連結:http://blog.51cto.com/hmtk520/1977185,如需轉載請自行聯系原作者