基本的网络配置:将Linux主机接入到网络,需要配置网络相关设置。v
一般包括如下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
网络配置方式:v
静态指定:
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
system-config-network-tui (setup)
配置文件
CentOS 7:网络配置工具
nmcli, nmtui, nm-connection-editor v
动态分配:DHCP: Dynamic Host Configuration Protocol
CentOS 6网卡名称:v
网络接口识别并命名相关的udev配置文件:/etc/udev/rules.d/70-persistent-net.rulesv
查看网卡:dmesg |grep –i ethethtool -i eth0
卸载网卡驱动:modprobe -r e1000rmmod e1000v
装载网卡驱动:modprobe e1000
配置网络接口v
接口命名方式:CentOS 6:
以太网:eth[0,1,2,...]
ppp:ppp[0,1,2,...]v
ifconfig命令ifconfig [interface]
# ifconfig -a
# ifconfig IFACE [up|down]
# ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/netmask [up]# ifconfig IFACE IP netmask NETMASK
注意:立即生效;
启用混杂模式:[-]promisc
划分子网:将一个大网络(主机ID位多)划分多个小的网络(主机ID位少),网络ID向主机ID借位,网络ID变多,主机ID变少
划分超网:将多个小网合并一个大网,主机ID向网络ID借位
子网掩码:共32位,对应网络ID位为1,对应主机ID为0
无类域间路由
CIDR表示法:ip/网络ID位数=ip/(32-主机ID位数)
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
公式
1 主机数=2^主机ID位-2
2 网络数=2^可变的网络ID位
3 网络ID=IP和netmask 相与
4 划分子网数=2^网络ID向主机ID借的位数
5 损失IP=2*(划分子网数-1)
路由表构成:
多个路由记录组成
每个路由记录由4项组成部分
1目标
(1) 主机
(2)网络 网络ID
(3) 未知 0.0.0.0
2 netmask
3 接口interface ,发往目标,从哪个接口发出去
4 网关gateway:下一个路由器的邻近本路由器的接口的IP
网络配置方式v
静态指定:ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
system-config-network-tui (setup)
配置文件
CentOS 7:网络配置工具
nmcli, nmtui, nm-connection-editor v
动态分配:DHCP: Dynamic Host Configuration Protocol
CentOS 6网卡名称v
网络接口识别并命名相关的udev配置文件:/etc/udev/rules.d/70-persistent-net.rulesv
查看网卡:dmesg |grep –i eth
ethtool -i eth0v
卸载网卡驱动:modprobe -r e1000
rmmod e1000v
装载网卡驱动:modprobe e1000
配置网络接口v
接口命名方式:CentOS 6:
以太网:eth[0,1,2,...]
ppp:ppp[0,1,2,...]v
ifconfig命令
ifconfig [interface]
# ifconfig -a
# ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/netmask [up]
# ifconfig IFACE IP netmask NETMASK
注意:立即生效;
启用混杂模式:[-]promisc
route命令v
路由管理命令v
查看:route -nv
添加:route addroute add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]v
目标:192.168.1.3 网关:172.16.0.1
# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0v
目标: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 gw172.16.0.1
# route add default gw 172.16.0.1v
删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]v
目标:192.168.1.3 网关:172.16.0.1
# route del -host 192.168.1.3v 目标:192.168.0.0 网关:172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0
配置动态路由v
通过守护进程获取动态路由
安装quagga包,支持多种格式的RIP、OSPF和BGP
命令vtysh配置
netstat命令
常用组合:-tan, -uan, -tnl, -unl
显示路由表:netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
# netstat -i
# netstat –I=IFACE
# ifconfig -s eno16777736
ip命令 配置Linux网络属性:ip命令
ip - show / manipulate routing, devices, policy routing and tunnels
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命令
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 address 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命令
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 delete
ip route del TARGET
显示路由:ip route show|list
清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
网络配置文件
IP、MASK、GW、DNS相关配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
/etc/sysconfig/network-scripts/ifcfg-IFACE
本地解析器:
解析器执行正向和逆向查询
/etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有用
通常,在使用DNS前检查
hosts 查看/etc/hosts 内容
dns名字解析
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search magedu.com
/etc/nsswitch.conf
与/etc/hosts相比优先于DNS
正向解析:FQDN-->IP
# dig -t A FQDN
# host -t A FQDN
反向解析:IP-->FQDN
# dig -x IP
# host -t PTR IP
178
网络配置文件:
/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
网卡别名
对虚拟主机有用
将多个IP地址绑定到一个NIC上
eth0:1 、eth0:2、 eth0:3
ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
ip命令:
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
设备别名:
为每个设备别名生成独立的接口配置文件
关闭NetworkManager服务
ifcfg-ethX:xxx
必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
注意:service network restart 生效
参考/usr/share/doc/initscripts-*/sysconfig.txt
网络配置
Linux网络属性配置的tui(text user interface):
system-config-network-tui
setup
注意:记得重启网络服务方能生效
配置当前主机的主机名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME=
Bonding工作模式:
mode1 mode2 mode3
bond的配置
Centos7用命令行在bond0上添加地址
#nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.37.100/24 创建bond0,并创建一个新的IP地址
#nmcli connection add type bond-slave ifname eth0 master bond0 将eth0的网卡绑定到bond0
#nmcli connection add type bond-slave ifname eth1 master bond0 将eth1的网卡绑定到bond1
#nmcli connection add type bond-slave con-name bond0-slave-eth0 ifname eth1 master bond0
#nmcli connection up bond-slave-eth1 开启eth1
#cat /proc/net/bonding/bond0查看谁在工作
#nmcli connection modify bond0 bond.options mode=broadcast可修改模式
#nmcli connection down bond0 暂时关闭
#nmcli connection up bond0 开启bond0
#cat /proc/net/bonding/bond0可以在查看一下
#nmcli connection up bond0-salve-eth0 开启eth0
#nmcli connection up bond0-salve-eth1 开启eth1
#nmcli connection down bond0解除关系
#rm -f ifcfg-bon* 删除bond
网卡名称
网卡设备的命名过程:
第一步:
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="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg
(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重启系统
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
190
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
相关工具
网络接口配置tui工具:nmtui
主机名称配置工具:hostnamectl
status
set-hostname
191
相关工具
网络接口配置tui工具:nmtui
主机名称配置工具:hostnamectl
status
set-hostname
使用nmcli配置主机名
CentOS6之前主机名配置文件:/etc/sysconfig/network
CentOS7主机名配置文件:/etc/hostname ,默认没有这个
文件,通过DNS反向解析获取主机名,主机名默认为:
localhost.localdomain
显示主机名信息
hostname
hostnamectl status
创建并修改文件并生效
hostnamectl set-hostname desktopX.example.com
删除文件,恢复主机名localhost.localdomain
使用nmcli配置网络:
NeworkManager是管理和监控网络设置的守护进程
设备即网络接口,连接是对网络接口的配置。一个网络接口
可有多个连接配置,但同时只有一个连接配置生效
显示所有包括不活动连接
nmcli con show
显示所有活动连接
nmcli con show --active
显示网络连接配置
nmcli con show "System eth0“
显示设备状态
nmcli dev status
显示网络接口属性:
nmcli dev show eno16777736
创建新连接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 ip4 172.25.X.10/24 gw4
172.25.X.254
修改连接设置:
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.25.X.10/24
172.25.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
mncli命令:
修改连接配置后,需要重新加载配置
nmcli con reload
nmcli con down “system eth0” 可被自动激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用网卡,访止被自动激活
图形工具
nm-connection-editor
字符工具
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname
网络组:
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提
高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现.
多种方式runner
broadcast
roundrobin
activebackup
loadbalance
lacp (implements the 802.3ad Link Aggregation Control
Protocol)
创建网络组接口:
nmcli con add type team con-name CN AME ifname
INAME [config JSON]
CNAME 连接名,INAME 接口名
JSON 指定runner方式
格式:'{"runner": {"name": "METHOD"}}'
METHOD 可以是broadcast, roundrobin,
activebackup, loadbalance, lacp
创建port接口:
nmcli con add type team-slave con-name CNAME
ifname INAME master TEAM
CNAME 连接名
INAME 网络接口名
TEAM 网络组接口名
连接名若不指定,默认为team-slave-IFACE
nmcli dev dis INAME
nmcli con up CNAME
INAME 设备名 CNAME 网络组接口名或port接口
管理网络组配置文件:
# /etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{\"runner\": {\"name\": \"broadcast\"}}"
BOOTPROTO=none
IPADDR0=172.25.5.100
PREFIX0=24
NAME=team0
ONBOOT=yes
# /etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes
实例:
网路组:
创建网络组接口:
nmcli con add type team con-name CNAME ifname INAME
CNAME连接名 INAME接口名
JSON格式
'{"runner":{"name":"METHOD"}}'
METHOD 可以是broadcast,roundrobin,activebackup,loadbalance,lacp
#nmcli connection add type team con-name con-myteam0 ifname myteam0 config '{"runner":{"name":"roundrobin"}}'创建网络组名为myteame
#nmcli connection add type team-slave ifname eth1 master myteam0 将网卡eth0绑定到组上
#nmcli connection add type team-slave ifname eth0 master myteam0 将网卡eth1绑定到组上
#nmcli connection modify con-myteam0 ipv4.method manual ipv4.addresses 192.168.37.100/24修改网络IP地址
#nmcli connection up con-myteam0 开启组
#nmcli connection up team-slave-eth1 开启eth1
#nmcli connection up team-slave-eth0 开启eth0
#teamdctl myteam0 state查看文件
#nmcli connection down con-myteam0 临时关闭组
#nmcli connection reload 重新加载
//nmcli connection delete con-myteam0 删除命令
#nmcli connection delete con-myteam0 删除网络组
#nmcli connection delete team-slave-eth0 删除
#nmcli connection delete team-slave-eth1 删除
网桥:
创建软件网桥
nmcli con add type bridge con-name br0 ifname br0
nmcli con br0 ipv4.addresses 172.16.0.6/16
ipv4.method manual
nmcli con add type bridge-slave con-name br0-port0
ifname eth0 master br0
查看网桥
cat /etc/sysconfig/network-scripts/ifcfg-br0
cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
brctl show
删除网桥 brctl delbr br0
删除网桥中网卡 brctl delif eth0
注意:NetworkManager只支持以太网接口接口连接到网桥,不支
持聚合接口
在命令行下测试网络的连通性:
显示主机名
hostname
测试网络连通性
ping
mtr
显示正确的路由表
ip route
确定名称服务器使用:
nslookup
host
dig
跟踪路由
traceroute
tracepath
网桥:
cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 忽略广播
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts显示广播
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 禁止广播
#cat /etc/hosts 主机文件 hostname 查看主机名
cat /etc/resolv.conf 查看dns的解析地址
nslookup解析工具