跨网络通信
跨网络通信需要借助路由器,而路由器根据路由表路径来转发数据
路由分类
主机路由
网络路由
默认路由
路由有优先级:精度越高,优先级越高
路由表构成
Destination Gateway Genmask Flags Metric Ref Use Iface
目标地址 网关 掩码 优先级 接口
目标:数据包发送的目标路径
网关
1、直连:不需要配置
2、非直连:下一跳地址(下一个路由器邻近本路由器的接口地址)
掩码:目标地址对应的掩码
接口:本路由器的出口
基本网络配置
将Linux主机接入到网络,需要配置网络相关设置
一般包括如下内容
主机名hostname
IP/Netmask
路由route:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
网卡管理
查看网卡工作模式
mii-tool -v IFACE
查看网卡驱动
dmesg | grep -i IFACE
ethtool -i IFACE
卸载网卡驱动
modproble -r e1000
rmmod e1000
装载网卡驱动
modproble e1000
网卡名称
centos6
网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化
以太网:eth[0,1,2,...]
ppp:ppp[0,1,2,...]
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
centos7
CentOS 7使用基于硬件,设备拓扑和设置类型命名:
一、网卡命名机制:systemd对网络设备的命名方式
1、Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
2、Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
3、硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
4、用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
5、 上述均不可用时,则使用传统命名机制
基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpXY:slot ,X:port
二、 名称组成格式
en: Ethernet 有线局域网
wl: wlan无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
修改网卡命名方式为传统命令方式
1、修改/etc/default/grub
grub2-mkconfig -o /etc/grub2.cfg
2、修改/etc/grub2.cfg --> /etc/grub2/grub.cfg
linux 16 行的行尾添加net.ifnames=0
设置主机名
centos6
hostname [HOSTNAME] 临时生效
永久有效:/etc/sysconfig/network
存放网关和主机名
修改网关,在下一次重启生效
修改主机名后执行hostname newhostname 生效
注意:如果hostname文件和网卡配置文件都有网关,网卡配置文件优先生效
centos7
hostname [HOSTNAME] 临时生效
永久有效:/etc/hostname
直接存放主机名
hostnamectl set-hostname newhostname 修改配置文件并生效
设置DNS
/etc/resolv.conf
nameserverDNS_SERVER_IP1
nameserverDNS_SERVER_IP2
nameserverDNS_SERVER_IP3
/etc/hosts 本地主机名数据库和IP地址映射
hosts文件优先级高于resolv.conf文件
注意:建议修改主机名后把新主机名添加到此文件;搭好网站后,在hosts文件中地址指向自己
/etc/nsswitch.conf
可修改hosts文件优先级;交换files和dns位置即可
IP 管理相关命令
ifconfig命令
查看
ifconfig [IFACE] 显示活动的接口列表
ifconfig -a 显示所有接口列表
ifconfig -s [IFACE] 显示网卡接收信息
启用禁用网卡
ifconfig IFACE down | up
ifdown | ifup IFACE 注意:此命令依赖于配置文件,配置文件得事先存在
设置IP地址
ifconfig IFACE IP/mask | IP netmask
ifconfig IFACEALIAS IP/netmask 网卡别名设置地址
启用混杂模式
[-]promisc
ip命令
查看
ip a | add | address 显示IP地址,网络层信息
ip link show | list [IFACE] 显示数据链路层信息
禁用或启用网卡
ip link set IFACE down | up
添加IP地址
ip a a IP/mask device IFACE
ip a a IP device IFACE label ALIASIFACE
ip a a IP dev IFACE scpe{global|link|host}指明作用域
global:全局可用
link:仅链接可用
host:本机可用
删除IP地址
ip a del IP dev IFACE
ip a flush dev IFACE 清空IP地址
路由管理
查看路由表
ip route show | list
添加路由
ip route add TARGET via GW dev IFACE
删除路由
ip route del TARGET via GW dev IFACE
ip route flush dev IFACE 清空路由表
注意:iP命令添加的地址只能用ip命令可以查看到
route 路由管理命令
查看路由表
route -n
添加路由
route add -host IP GW IP dev IFACE 主机路由
route add -net IP/32 GW IP dev iFACE
route add -net IP/mask GW IP [dev IFACE] 网络路由
route add -net IP netmask GW IP [dev IFACE]
route add default GW IP 默认路由
route add -net 0.0.0.0 netmask 0.0.0.0
删除路由
route del -host IP
route del -net IP netmask
route del default gw IP
使用命令管理路由是临时生效,永久生效需写配置文件
路由配置文件
/etc/sysconfig/network-scripts/route-IFACE
格式
一、TARGET via GW
二、每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
重启网络服务后配置文件生效 service network restart
注意:如果有两条默认路由,和外网通讯时会有故障,建议写一条默认路由
Linux默认不转发路由,开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
跟踪路由
traceroute IP
tracepath IP
mtr 动态跟踪
网络配置文件
IP,MASK,GW,DNS相关配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
DEVICE 此配置文件应用到的设备
ONBOOT=yes|no 是否开机自动启动
BOOTPROTO=dhcp|static|none|bootp 激活此设备时使用的地址配置协议
IPADDR 指明IP地址
NETMASK | PREFIX 子网掩码,可用CIDR表示法
TYPE=ethernet|bridge 接口类型
GATEWAY 默认网关
DNS1 主DNS服务器
DNS2 次DNS服务器
HWADDR 对应设备的MAC地址
MACADDR 自己指定的MAC地址
UUID 设备的唯一标识
USERCTL 普通用户是否可控制此设备
PEERDNS 如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
NM_CONTROLLED=yes|no NM是NetworkManager,此网卡是否接受NM控制;建议centos6为No
查看网络系统状态信息相关命令
netstat 命令
netstat[--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t:tcp协议相关
-u:udp协议相关信息
-w:raw socket 相关
-a:所有
-l:处于Listen状态
-n:数字格式显示
-e:显示扩展信息
-p:显示相关进程及PID
-nr:显示路由表
netstat -i 显示所有接口统计信息
-IIFACE | -I=IFACE 显示指定接口统计信息
常用组合
netstat -tan,-uan,-tanp,-tnl,-unl
ss 显示处于活动状态的套接字信息
ss [ OPTIONS ] [ FILTER ]
-t:TCP协议相关
-u:UDP协议相关
-w:裸套接字相关
-x:Unix sock相关
-l:listen状态的连接
-a:所有
-n:数据格式
-p:相关程序及PID
-e:扩展信息
-m:内存信息
-o:计时器信息
常用组合
ss -l,-pl 显示本地打开的所有端口相关信息
ss -ta,-tan,tnl,-tanl,-tanlp 显示tcp协议相关信息
ss -ua,-uan,unl 显示udp协议相关信息
ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的ssh连接
ss -s 显示当前socket详细信息
nmcli 地址配置工具
nmcli 地址配置工具
查看
nmcli connection show [IFACE] 显示所有连接
nmcli dev status 显示所有设备状态
nmcli connection show --active 显示所有活动连接
启用或禁用网卡
nmcli connection IFACE up | down
nmcli dev disconnect IFACE 断开连接
nmcli dev connect IFACE 连接
创建新连接
nmcli connection add con-name aaa type ethernet ifname ens38 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1/24 ipv4.dns 114.114.114.114 autoconnect yes
修改连接设置
nmcli connection mod IFACE [+|-]setting.property value
+ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method:manual | auto
启用或禁用连接
nmcli connection up IFACE
nmcli connection down IFACE
重新加载配置文件
nmcli connection reload
网卡别名
在一个网卡上绑定多个IP地址
一、命令临时绑定
ifconfig IFACEALIAS IP/mask
ifconfig eth0:0 192.168.1.254/24
ip address add IP/mask dev IFACE label IFACE
ip a a 192.168.1.254/24 dev ens33 label ens33:0
nmcli connection mod IFACE +ipv4.address IP IP
删除
ifconfig eth0:0 down
ip a del 192.168.1.254/24 dev ens33:0
nmcli connection mod IFACE -ipv4.address IP
二、写配置文件
1、写多个配置文件
cat > ifcfg-eth0:1
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.1.254
PREFIX=24
cat > ifcfg-eth0:2
DEVICE=eth0:1
BOOTPROTO=static
IPADDR=192.168.1.254
PREFIX=24
service NetworkManager stop
service network restart
注意:写完配置文件后需重启服务;Centos6上需关闭NetworkManager服务
2、一个配置文件里写多个地址
cat > ifcfg-ens33
DEVICE=ens33
BOOTPROTO=none
IPADDR=192.168.30.7
NETMASK=255.255.255.0
IPADDR1=192.168.30.71
NETMASK1=255.255.255.0
注意:网卡别名必须使用静态地址,不可使用DHCP
Linux网络配置工具:字符配置工具
setup
nmtui
多个网卡上绑定一个IP地址
centos6:Bonding
将多块网卡上绑定一个IP地址对外提供服务,可实现高可用或负载均衡;虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址
Bonding工作模式
Mode 0(balance-rr) 轮转策略
从头到尾顺序的在每一个slave接口上面发送数据包;提供负载均衡和容错能力
Mode 1(active-backup) 活动备份(主备)策略
只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其它slave;
为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3 (broadcast)广播策略
在所有slave接口上传送所有报文,提供容错能力
配置
1、创建bonding配置文件
把要绑定的网卡设为同一模式
2、创建物理网卡配置文件
3、重启网络服务
注意:centos6在重启网络服务之前需关闭NetworkManager
查看bond状态
cat /proc/net/bonding/bond0
删除
1、禁用bond0接口,卸载bond驱动
2、删除配置文件
nmcli命令配置Bonding
1、添加bonding接口
nmcli connection add type bond con-name mybond0 ifname mybond0 mode active-backup ipv4.method manual ipv4.address 192.168.30.128/24
2、添加从属接口
nmcli connection add type bond-slave con-name boud0-ens33 ifname mybond0 master mybond0
nmcli connection add type bond-slave con-name boud0-ens37 ifname mybond0 master mybond0
3、启动从属接口
nmcli connection up bond0-ens33
nmcli connection up bond0-ens37
4、启动绑定
nmcli connection up mybond0
centos7:网络组Networking Teaming
将多个网卡聚合到一起,从而实现冗错和高吞吐量
实现方法
1、创建team组接口
nmcli connection add type team con-name team0 config '{"runner":{"name":"broadcast"}}' ifname team0 ipv4.method manual ipv4.address 192.168.30.100/24
2、创建port接口
nmcli connection add type team-slave con-name team0-ens33 ifname ens33 master team0
nmcli connection add type team-slave con-name team0-ens37 ifname ens37 master team0
3、启用接口
nmcli connection up team0
nmcli connection up team0-ens33
nmcli connection up team0-ens37
查看team状态
teamdctl team0 state
删除
1、直接删除文件
2、命令删除
网络组配置文件
虚拟网卡:
物理网卡: