配置网络
实现网络组
测试网络
网络工具
基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。
一般包括如下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
网络配置方式
静态指定:
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
system-config-network-tui(setup)
配置文件
CentOS 7:网络配置工具
nmcli, nmtui, nm-connection-editor
动态分配:
DHCP: Dynamic Host Configuration Protocol
配置网络接口
接口命名方式:CentOS 6:
以太网:eth[0,1,2,…]
ppp:ppp[0,1,2,…]
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
route命令
路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gwGw] [[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 [gwGw] [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
配置动态路由
通过守护进程获取动态路由
安装quagga包,支持多种格式的RIP、OSPF和BGP
命令vtysh配置
netstat命令
netstat – Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
显示网络连接:
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命令
常用组合:
-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 }
iplink -network device configuration
setdev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show[dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip命令
ipaddr{ add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用;
link: 仅链接可用;
host: 本机可用;
[broadcast ADDRESS]:指明广播地址
ipaddress show -look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ipaddress flush -使用格式同show
ipaddradd 172.16.100.13/16 dev eth0 label eth0:0
ipaddrdel 172.16.100.13/16 dev eth0 label eth0:0
ipaddrflush dev eth0 label eth0:0
ip命令
iproute -routing table management
添加路由:iproute add
iproute add TARGET via GW dev IFACE srcSOURCE_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
添加网关:iproute add default via GW dev IFACE
iproute add default via 172.16.0.1
删除路由:iproute delete
iproute del TARGET
显示路由:iproute show|list
清空路由表:iproute flush[dev IFACE] [via PREFIX]
iproute flush dev eth0
ss命令
格式:ss[OPTION]… [FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unixsock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
ss命令
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
tcpfinite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport=
sport =
示例:’( dport= :sshor sport = :ssh)’
常用组合:
-tan, -tanl, -tanlp, -uan
常见用法
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详细信息:
网络配置文件
IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
/etc/sysconfig/network-scripts/ifcfg-IFACE:
说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
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文件中
本地解析器
解析器执行正向和逆向查询
/etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有用
通常,在使用DNS前检查
getent hosts 查看/etc/hosts 内容
dns名字解析
/etc/resolv.conf
nameserverDNS_SERVER_IP1
nameserverDNS_SERVER_IP2
nameserverDNS_SERVER_IP3
/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
网络配置文件
/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
两种风格:
(1) TARGET via GW
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
网卡别名
对虚拟主机有用
将多个IP地址绑定到一个NIC上
eth0:1
eth0:2
eth0:3
ifconfig命令:
ifconfigeth0:0 192.168.1.100/24 up
ifconfigeth0:0 down
ip命令:
ipaddradd 172.16.1.2/16 dev eth0
ipaddradd 172.16.1.1/16 dev eth0 label eth0:0
ipaddrdel 172.16.1.1/16 dev eth0 label eth0:0
ipaddrflush 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=
网卡名称
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg|grep -i eth
ethtool|-i eth0
卸载网卡驱动:
modprobe-r e1000
装载网卡驱动:
modprobee1000
网络接口配置-bonding
Bonding
就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。
Bonding的工作模式
Mode 0 (balance-rr)
轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
Mode 1 (active-backup)
活动-备份(主备)策略:在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力。
Bonding配置
创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS=“miimon=100 mode=0”
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
miimon是用来进行链路监测的。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
查看bond0状态:/proc/net/bonding/bond
关于bonding的详细配置请参照
/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
CentOS 7网络属性配置
centos6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化。
centos7使用基于硬件,设备拓扑和设置类型命名:
(1) 网卡命名机制
systemd对网络设备的命名方式
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
(e) 上述均不可用时,则使用传统命名机制
网卡名称
基于BIOS支持biosdevname中
内置网卡:em1,em2
pci卡:pYpXY:slot ,X:port
(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 rhgbquiet”
或:修改/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
nmclidevice help
connection -start, stop, and manage network connections
nmcliconnection help
修改IP地址等属性:
#nmcliconnection modify IFACE [+|-]setting.propertyvalue
setting.property:
ipv4.addressesipv4.gateway
ipv4.dns1 ipv4.methodmanual | dhcp
修改配置文件执行生效:
systemctlrestart network
nmclicon reload
nmcli命令生效:
nmclicon down eth0 ;nmclicon up eth0
相关工具
网络接口配置tui工具:nmtui
主机名称配置工具:hostnamectl
status
set-hostname
使用nmcli配置网络
NeworkManager是管理和监控网络设置的守护进程
设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效。
显示所有包括不活动连接
nmclicon show
显示所有活动连接
nmclicon show –active
显示网络连接配置
nmclicon show “System eth0“
显示设备状态
nmclidev status
使用nmcli配置网络
显示网络接口属性
nmclidev show eno16777736
创建新连接default,IP自动通过dhcp获取
nmclicon add con-name default type Ethernet ifnameeth0
删除连接
nmclicon del default
创建新连接static ,指定静态IP,不自动连接
nmcticon add con-name static ifnameeth0 autoconnectno type Ethernet ip4 172.25.X.10/24 gw4 172.25.X.254
使用nmcli配置网络
启用static连接配置
nmclicon up static
启用default连接配置
nmclicon up default
查看帮助
nmclicon add help
使用nmcli配置网络
修改连接设置
nmclicon mod“static” connection.autoconnectno
nmclicon mod “static” ipv4.dns 172.25.X.254
nmclicon mod “static” +ipv4.dns 8.8.8.8
nmclicon mod “static” -ipv4.dns 8.8.8.8
nmclicon mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
nmclicon mod “static” +ipv4.addresses 10.10.10.10/16
nmcli命令
nmclicon mod
ifcfg-* 文件
ipv4.method manual
BOOTPROTO=none
ipv4.method auto
BOOTPROTO=dhcp
ipv4.addresses “192.0.2.1/24 192.0.2.254”
IPADDR0=192.0.2.1
PREFIX0=24
GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8
DNS0=8.8.8.8
ipv4.dns-search example.com
DOMAIN=example.com
ipv4.ignore-auto-dns true
PEERDNS=no
connection.autoconnectyes
ONBOOT=yes
connection.id eth0
NAME=eth0
connection.interface-name eth0
DEVICE=eth0
802-3-ethernet.mac-address . . .
HWADDR= . . .
网络配置文件
设备配置被保存在文本文件中
/etc/sysconfig/network-scripts/ifcfg-<name>
帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt
动态配置
静态配置
DEVICE=ethXHWADDR=0:02:8A:A6:30:45 BOOTPROTO=dhcpONBOOT=yes Type=Ethernet
DEVICE=ethXHWADDR=0:02:8A:A6:30:45 IPADDR=192.168.0.123 NETMASK=255.255.255.0 GATEWAY=192.168.0.254 ONBOOT=yes
Type=Ethernet
nmcli命令
修改连接配置后,需要重新加载配置
nmcli con reload
nmcli con down “system eth0” 可被自动激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用网卡,访止被自动激活
图形工具
nm-connection-editor
网络组Network Teaming
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现.
多种方式runner
broadcast
roundrobin
activebackup
loadbalance
lacp(implements the 802.3ad Link Aggregation Control Protocol)
网络组
启动网络组接口不会自动启动网络组中的port接口
启动网络组接口中的port接口不会自动启动网络组接口
禁用网络组接口会自动禁用网络组中的port接口
没有port接口的网络组接口可以启动静态IP连接
启用DHCP连接时,没有port接口的网络组会等待port接口的加入
网络组
nmclicon add type team con-name CNAMEifnameINAME[configJSON]
CNAME连接名,INAME接口名
JSON指定runner方式
格式:'{“runner”: {“name”: “METHOD”}}’
METHOD可以是broadcast,roundrobin,
activebackup,loadbalance, lacp.
创建网络组接口
# nmcli con add type team con-name team0 ifname team0 config ‘{“runner”: {“name”: “loadbalance”}}’
# nmcli con mod team0 ipv4.addresses 192.168.1.100/24
# nmcli con mod team0 ipv4.method manual
创建网络组接口实例
nmcli con add type team-slave con-name CNAMEifnameINAMEmaster TEAM
CNAME连接名,
INAME网络接口名,
TEAM网络组接口名.
连接名若不指定,默认为team-slave-IFACE.
nmclidev dis INAME
nmclicon up CNAME
INAME设备名CNAME网络组接口名或port接口
创建port接口
# nmcli con add type team-slave ifname eth1 master team0 con-name team0-eth1
# nmcli con add type team-slave ifname eth2 master team0 con-name team0-eth2
# nmcli con up team0
# nmcli con up team0-eth1
# nmcli con up team0-eth2
# nmcli dev dis eth2
# teamdctl team0 state
网络组实例
#ip link
# nmcli con add type team con-name team0 ifname team0 config ‘{“runner”: {“name”: “activebackup”}}’
# nmcli con mod team0 ipv4.addresses ‘192.168.0.100/24’
# nmcli con mod team0 ipv4.method manual
# nmcli con add type team-slave con-name team0-port1 ifname eno1 master team0
# nmcli con add type team-slave con-name team0-port2 ifname eno2 master team0
# teamdctl team0 state
实验:创建网络组
#ping -I team0 192.168.0.254
# nmcli dev dis eno1
# teamdctl team0 state
# nmcli con up team0-port1
# nmcli dev dis eno2
# teamdctl team0 state
# nmcli con up team0-port2
# teamdctl team0 state
网络组实验
# /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
管理网络组配置文件
centos6之前主机名配置文件:/etc/sysconfig/network
centos7主机名配置文件:/etc/hostname ,默认没有这个文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
显示主机名信息
hostname
hostnamectlstatus
创建并修改文件并生效
hostnamectlset-hostname desktopX.example.com
删除文件,恢复主机名localhost.localdomain
DNS设置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:
nmclicon mod “system eth0” ipv4.ignore-auto-dns yes
使用nmcli配置主机名
测试网络
在命令行下测试网络的连通性
显示主机名
hostname
测试网络连通性
ping
mtr
显示正确的路由表
iproute
确定名称服务器使用:
nslookup
host
dig
跟踪路由
traceroute
Tracepath
网络客户端工具
lftp, ftp, lftpget, wget
# lftp[-p port] [-u user[,password]] SERVER
子命令:
get、mget、ls、help
# lftpgetURL
# ftp
# wget
wget[option]… [URL]…
-q: 静默模式
-c: 断点续传
-O: 保存位置
–limit-rates=: 指定传输速率
原创文章,作者:charlest,如若转载,请注明出处:http://www.178linux.com/84912