网络配置



Linux之网络配置
Linux之网络配置

网络配置文件

ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
IPADDR:指明IP地址
NETMASK:子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf

配置网卡信息:

DEVICE=eth0
NAME=eth0
BOOTPROTO=static or none
IPADDR=192.168.0.251
PREFIX=24 or NETMASK=255.255.255.0
ONBOOT=yes
DNS1=8.8.8.8
DNS2=114.114.114.114


配置网络接口

ifconfig命令
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
ifconfig网卡别名命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
ping -I 172.20.0.16 172.20.0.7 强制使用哪个IP去ping一个ip

监测ping包

tcpdump -i eth1 icmp -nn

注意:linux eth0网卡可以配置多个ip地址,如果希望可以自动获取ip地址和设置静态地址,可以eth0配置dhcp,eth0:1设置静态。

查看谁在用6000这个端口

lsof -i :6000 -n

查看eth0每0.5秒,接受包的实时量

watch -n0.5 netstat -Ieth0

ip命令:

如果ip命令不能自动补全,可安装epel源里的bash-completion
配置Linux网络属性:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link - network device configuration
-------- set dev IFACE
-------------可设置属性:
-----------------up and down:激活或禁用指定接口
--------------------------ifup/ifdown
-------- show [dev IFACE]:指定接口
-----------------[up]:仅显示处于激活状态的接口
网卡关闭和重命名

ip link set eth0 down
ip link set eth0 name eth1

ip addr { add | del } IFADDR dev STRING

[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
-----------global: 全局可用
-----------link: 仅链接可用
-----------host: 本机可用
[broadcast ADDRESS]:指明广播地址

ip address show - look at protocol addresses

[dev DEVICE]
[label PATTERN]
[primary and secondary]

ip addr flush 使用格式同show

ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0

ip route - routing table management
添加路由:ip route add

ip route add TARGET via GW dev IFACE src SOURCE_IP
-----------------TARGET:
-----------------------------主机路由:IP
-----------------------------网络路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1

添加网关:

ip route add default via GW dev IFACE
ip route add default via 172.16.0.1

删除路由:

ip route del TARGET

显示路由:

ip route show|list

清空路由表:

ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0

网卡设置别名

ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0

网络接口配置-bonding

Bonding工作模式
Mode 0 (balance-rr)
Mode 1 (active-backup)
Mode 3 (broadcast)
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和 EtherChannel

Bonding配置

创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0

-------------------------------------DEVICE=bond0
-------------------------------------BOOTPROTO=none
-------------------------------------BONDING_OPTS= “miimon=100 mode=0”
如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路

/etc/sysconfig/network-scripts/ifcfg-eth0

-------------------------------------DEVICE=eth0
-------------------------------------BOOTPROTO=none
-------------------------------------MASTER=bond0
-------------------------------------SLAVE=yes
-------------------------------------USERCTL=no

查看bond0状态:/proc/net/bonding/bond0
删除bond0

ifconfig bond0 down
rmmod bonding

详细帮助:

/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt

实验:创建bond0实现网卡主从热备

Linux之网络配置

ifcfg-bond0文件内容

DEVICE=bond0
IPADDR=172.16.36.55
PREFIX=24
BONDING_OPTS="miimon=100 mode=1"

ifcfg-ens33,ens37文件内容相同,重启网路服务bond0生效。

TYPE=Ethernet
MASTER=bond0
SLAVE=yes

查看bond0状态

cat /proc/net/bonding/bond0
Linux之网络配置

查看设备中有几个bond设备

cat /sys/class/net/bonding_masters

采用传统命名方式

编辑/etc/default/grub配置文件

GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg

为grub2生成其配置文件

grub2-mkconfig -o /etc/grub2.cfg

重启系统

CentOS7主机名

配置文件:/etc/hostname ,默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain

显示主机名信息

hostname
hostnamectl status

设置主机名

hostnamectl set-hostname centos7.magedu.com

删除文件/etc/hostname,恢复主机名localhost.localdomain

CentOS 7网络配置工具

字符配置tui工具:nmtui
命令行工具:nmcli

nmcli命令

地址配置工具:nmcli

nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
nmcli device help
connection - start, stop, and manage network connections
nmcli connection help

修改IP地址等属性:

nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method manual | auto

修改配置文件执行生效:

systemctl restart network
nmcli con reload

nmcli命令生效:
&&nmcli con down eth0 ;nmcli con up eth0

显示所有包括不活动连接

nmcli con show

显示所有活动连接

nmcli con show --active

显示网络连接配置

nmcli con show "System eth0“

显示设备状态

nmcli dev status

显示网络接口属性

nmcli dev show eth0

创建新连接default,IP自动通过dhcp获取

nmcli con add con-name default type Ethernet ifname eth0

删除连接

nmcli con del default

创建新连接static ,指定静态IP,不自动连接

nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254

启用static连接配置

nmcli con up static

启用default连接配置

nmcli con up default

查看帮助

nmcli con add help

修改连接设置

nmcli con mod “static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.16.X.10/24 172.16.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16

DNS设置,存放在/etc/resolv.conf文件中

PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取等价于下面命令:
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
Linux之网络配置

nmcli实现bonding

添加bonding接口

nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup

添加从属接口

nmcli con add type bond-slave ifname ens7 master bond0
nmcli con add type bond-slave ifname ens3 master bond0
注:如无为从属接口提供连接名,则该名称是接口名称加类型构成

要启动绑定,则必须首先启动从属接口

nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1

启动绑定

nmcli con up mybond0

实验:使用nmcli创建bond

创建名称为mybond1的设备bond1

nmcli connection add type bond con-name mybond1 ifname bond1 mode balance-rr

将eth1加入到bond1中

nmcli connection add slave-type bond ifname eth1 master bond1
nmcli connection add slave-type bond ifname eth2 master bond1

要启动绑定,则必须首先启动从属接口

nmcli connection up bond-slave-eth1
nmcli connection up bond-slave-eth2

最后启动bond1

nmcli connection up mybond1

实验:使用nmcli创建网络组team0可通过IP route改变路由默认metric值,更改网卡使用的先后顺序

创建名称为myteam0的设备team0

nmcli connection add type team con-name myteam0 ifname team0 config '{"runner": {"name": "loadbalance"}}' ipv4.addresses 172.16.36.33/24 ipv4.method manual

创建两个team配置文件加入到team0中

nmcli connection add con-name team0-eth1 type team-slave ifname eth1 master team0
nmcli connection add con-name team0-eth2 type team-slave ifname eth2 master team0

要启动team0,则必须首先启动从属team接口

nmcli connection up team0-eth1
nmcli connection up team0-eth2

最后期启动team0

nmcli connection up team0

查看team0状态。

teamdctl team0 stat

实验:nmcli创建网桥

创建网桥名字叫mybridge0 关联设备br0 并配置手工管理

nmcli connection add type bridge con-name mybridge0 ifname br0 ipv4.addresses 11.11.0.254 ipv4.method manual

创建静态以太网,连接名叫ens37,配置文件内名字叫ens37,关联设备接口ens37,IP和网关指定,默认路由不开启,网卡在线。

nmcli connection add con-name ens37 ifname ens37 connection.interface-name ens37 autoconnect yes type ethernet ipv4.never-default yes ipv4.method manual ipv4.addresses 10.0.0.254/30 ipv4.gateway 10.0.0.253

配置网桥的两个端口加入网桥

nmcli connection add type bridge-slave ifname ens33 master br0
nmcli connection add type bridge-slave ifname ens37 master br0

启动端口

nmcli connection up bridge-slave-ens33
nmcli connection up bridge-slave-ens37

启动网桥

nmcli connection up mybridge0

个人感觉使用brctl,创建网桥更便捷,老工具了?

Linux之网络配置

Centos默认有两个网卡管理服务,NetworkManager和network。可能存在冲突,关闭NetworkManager即可

service NetworkManager stop;service network restart
ping -s 65507 192.168.0.7 -f 强制发大包PING命令使用
arp -n 查看arp地址映射关系
arp -s 172.168.0.1 MCAADDR 绑定ip和物理地址,防止arp欺骗

linux虚拟机复制副本后,开机后选择我已经复制了虚拟机,开机进入系统后,会看到ip地址名称为eth1,因为旧网卡etn0的MAC地址和源主机冲突,可自行更改名称为eth0,具体操作如下

vim /etc/udev/rules.d/70-persistent-net-rules
删除里面eth0的行
更改下面eth1为eth0
ethtool -i eth1 查看eth1网卡驱动 ethool工具默认不存在,需要yum安装httpd-tools
rmmod e1000 卸载网卡驱动
modprobe e1000重新加载网卡驱动

路由表:

目标网络:网络ID
netmask
接口:从本设备哪个接口出去能到底目标网络
网关:到达目标网络,将数据报文发送给下个路由器的接口的IP

route命令

查看网关

route -n

添加默认路由:

route add default gw 172.16.0.1

删除:route del

route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
route del -host 192.168.1.3
route del -net 192.168.0.0 netmask 255.255.255.0

添加:route add

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
route add -net 172.22.0.0/16 gw 10.0.0.201
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

开启路由转发功能

echo 1 > /pro/sys/net/ipv4/ip_forward


ss命令:

常用组合:-tan, -tanl, -tanlp, -uan

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 )’

常见用法
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的ssh连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
ss -s 列出当前socket详细信息

netstat命令

常用组合:

-tan, -uan, -tnl, -unl
显示网络连接:
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相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式
-p: 显示相关进程及PID

显示路由表:

netstat {--route|-r} [--numeric|-n] -r: 显示内核路由表|-nr: 数字格式
Linux之网络配置

显示接口统计数据:

netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0
Linux之网络配置

Linux之网络配置

实验。三台Linux充当路由器,两台xp虚拟机充当客户机,如下图

Linux之网络配置
Linux之网络配置

要点分析:虚拟机装两块网卡,由于是克隆的虚拟机,容易混淆端口,导致各种不通,请自行测试。Centos6默认有两个网卡管理服务,NetworkManager和network。可能存在冲突,关闭NetworkManager即可
三个虚拟机的seliux和防火墙全部关闭,全部需要开启路由转发功能

Centos 6
service NetworkManager stop
service iptables stop
chkconfig iptables off
Centos 7
systemctl stop firewalld
systemctl diable firewalld
echo 1 > /pro/sys/net/ipv4/ip_forward

Linux之网络配置
Linux之网络配置
只需要在centos7上配置两条静态路由,一条通往192.168.0.0网段 另一条通往172.16.0.0网段,即可

route add -net 172.16.0.0/16 gw 11.11.0.1
route add -net 192.168.0.0/24 gw 10.10.0.1
centos7
Linux之网络配置

在Centos6和Centos 6克隆上各写一条默认路由即可

route add default gw 10.10.0.2
route add default gw 11.11.0.2
Centos6
Linux之网络配置
Centos 6克隆
Linux之网络配置

xp测试效果图
PING测试
Linux之网络配置
TRACERT路由测试
Linux之网络配置