1. 程式人生 > >Linux網絡(二)

Linux網絡(二)

tcp fsm nmtui

一、Linux網絡命令分類
二、ifcfg家族
三、iproute2家族
四、nmtui家族
五、TCP FSM




一、Linux網絡命令分類
分類:
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


二、ifcfg家族
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 //反向解析

三、iproute2家族
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:
vim /etc/sysconfig/network-scripts/route-eno16777736
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
GATEWAY1=192.168.3.1
systemctl restart network.service
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
service network restart

四、nmtui家族
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 (被動關閉)等待最後一個關閉傳輸連接確認,並等待所有分組消失

技術分享




本文出自 “黑馬騰空” 博客,請務必保留此出處http://hmtk520.blog.51cto.com/12595610/1977185

Linux網絡(二)