Linux网络
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络相关的知识,希望对你有一定的参考价值。
一、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;详细
[[email protected] ~]# 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
[[email protected] 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网络的主要内容,如果未能解决你的问题,请参考以下文章