如果我们需要搭建云环境,做集群,都离不开网络,所以在linux中,对于网络的了解至关重要,这里不缀余网络理论相关基础知识,仅对网络配置的命令进行归纳总结
对于Centos6和7都可用的命令:
1. ifconfig命令
ifconfig [interface]
显示接口信息:
# ifconfig -a 显示所有活动和非活动状态接口
# ifconfig IFACE [up|down] 显示某特定接口
ifconfig interface [aftype] options | address ...
配置接口地址: 注意:立即生效;
# ifconfig IFACE IP/mask [up]
# ifconfig IFACE IP netmask MASK
启用混杂模式:[-]promisc:即便报文不是传输到此接口的也接收一份,便于抓包,监测
2.route命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
添加路由示例:
目标:192.168.1.3 网关:172.16.0.1
~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标:192.168.0.0 网关:172.16.0.1
~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
添加默认路由,网关:172.16.0.1
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
~]# route add default gw 172.16.0.1
删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例:
目标:192.168.1.3 网关:172.16.0.1
~]# route del -host 192.168.1.3
目标:192.168.0.0 网关:172.16.0.1
~]# route del -net 192.168.0.0 netmask 255.255.255.0
3.netstat命令:
显示网络连接状态:
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关---裸套接字
-l: 处于监听状态
-a: 所有状态,不加-a仅显示已经建立的
-n: 以数字显示IP和端口;
-e:扩展格式
-p: 显示相关进程及PID
常用组合:
-tan, -uan, -tnl, -unl
显示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
# netstat -i
# netstat -I IFACE
4.ip命令:
ip - show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
⑴.link OBJECT:
ip link - network device configuration 主要用于管理二层属性
set
dev IFACE
可设置属性:
up and down:激活或禁用指定接口;
show
[dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
更全面-s
⑵.addr OBJECT:
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用;
link: 仅链接可用;
host: 本机可用;
[broadcast ADDRESS]:指明广播地址
添加地址会发现原地址还在,只是在这个网卡上又加了个地址,现在网卡有两个地址,想要更改地址需要使用replace子命令
指定别名添加:
发现多了eth0:0
删除地址:
指定别名删除地址:
ip address show - look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ip address flush - flush protocol addresses
使用格式同show
清空172/8的地址
⑶.ip route - routing table management
ip route add
添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP(source ip可以指 定伪装的源地址)
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
添加网关:ip route add defalt via GW dev IFACE
删除路由:ip route del TARGET
ip route show
ip route flush:清空路由表
[dev IFACE]
[via PREFIX]
添加路由:
删除路由:
添加默认网关:
ip route add default via 192.168.0.1
清空路由表:
ip route flush 172/8
5.ss命令:和netstat命令差不多,但是比netstat高效
格式:ss [OPTION]... [FILTER]
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport = 仅显示源端口是某端口的连接
sport = 仅显示目标端口是某端口的连接
示例:’( dport = :ssh or sport = :ssh )’
常用组合:
-tan, -tanl, -tanlp, -uan
通过修改配置文件配置网络:
IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE
①./etc/sysconfig/network-scripts/ifcfg-IFACE:
DEVICE:此配置文件应用到的设备;
HWADDR:对应的设备的MAC地址;
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见有的Ethernet, Bridge;
UUID:设备的惟一标识;
IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY: 默认网关;
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;
USERCTL:普通用户是否可控制此设备;
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;
ifcfg文件示例:
②./etc/sysconfig/network-scripts/route-IFACE
两种风格:多条路由可以在同一文件中定义
(1) TARGET via GW
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
添加永久生效的路由:
vim/etc/sysconfig/network-scripts/route-eth0
③.给网卡配置多地址:/etc/sysconfig/network-scripts/ifcfg-网卡别名
配置时建议删除HWADDR和UUID
ifconfig:
ifconfig IFACE_ALIAS
ip addr add
配置文件:
ifcfg-IFACE_ALIAS
DEVICE=IFACE_ALIAS
注意:网卡别名不能使用dhcp协议引导,因为dhcp根据mac地址分配地址,而我们定义网卡别名时删除了HWADDR字段,所以只能自己手动配置;
④.Linux网络属性配置的tui(text user interface):在此修改会同步到配置文件,永久有效
system-config-network-tui
也可以使用setup找到;
注意:记得重启网络服务方能生效;
⑥.配置主机名:
配置当前主机的主机名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
⑦.网络接口识别并命名相关的udev配置文件:/etc/udev/rules.d/70-persistent-net.rules
修改完成后需要重新卸载,装载驱动才能生效:
用lsmod查看网卡驱动是哪个
卸载网卡驱动:
modprobe -r e1000
装载网卡驱动:
modprobe e1000
centos7网络配置:
(1) 网卡命名机制
systemd对网络设备的命名方式:
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1;
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1;
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0;
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56;
(e) 上述均不可用时,则使用传统命名机制;
上述命名机制中,有的需要biosdevname程序的参与;(需要安装)
(2) 名称组成格式
en: ethernet
wl: wlan
ww: wwan
名称类型:
o<index>: 集成设备的设备索引号;
s<slot>: 扩展槽的索引号;
x<MAC>: 基于MAC地址的命名;
p<bus>s<slot>: enp2s1
网卡设备的命名过程:
第一步:
udev, 辅助工具程序/lib/udev/rename_device, /usr/lib/udev/rules.d/60-net.rules
第二步:
biosdevname 会根据/usr/lib/udev/rules.d/71-biosdevname.rules
第三步:
通过检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description
ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH
回归传统命名方式:
(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"
(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重启系统
地址配置工具:nmcli
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
connection - start, stop, and manage network connections
nmcli general status 显示状态信息
如何修改IP地址等属性:
#nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method网络接口配置类型
manual 手动配置方式
添加一个地址,+表示添加,-表示删除,什么也不带表示修改,下面的c为connection的简写
重启网卡:
查看:多了个地址:
更改DNS指向
网络接口配置tui工具:nmtui
主机名称配置工具:hostnamectl
status
set-hostname
修改:
查看: