Linux网络配置

配置网络

实现网络组
测试网络
网络工具

 

 

基本网络配置
将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

(0)
charlestcharlest
上一篇 2017-08-19
下一篇 2017-08-19

相关推荐

  • Linux初识

    Linux

    2018-03-07
  • jackcui0804作业

    (1)显示/proc/meminfo 文件中以大小s 开头的行;( 要求:使用两种方式) [root@centos7 ~]# cat /proc/meminfo | grep -e "^s.*" -e "^S.*" SwapCac…

    Linux干货 2016-08-08
  • iptables练习

    iptables实战 1.开启防火墙 systemctl start firewalld 2.清空所有的默认规则,定义自己的规则 iptables -F 查看此时的iptables iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD…

    2015-03-15
  • HTTP详解(2)-请求、响应、缓存

    1. HTTP请求格式              做过Socket编程的人都知道,当我们设计一个通信协议时,“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的…

    Linux干货 2015-04-04
  • 马哥教育网络第21期-第十二周课程练习

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求 (2) 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;并发访问响应模型(Web I/O): //服务器接受客户端的请求 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应; //一个进程只有一个…

    Linux干货 2016-12-26
  • 堡垒机-麒麟开源堡垒机SSH公私钥认证配置文档

    1、进入SSH公私钥管理界面 操作步骤:进入系统,点击左侧导航资产管理,后边TAB标签导航SSH公私钥,如下图     2、批量导入SSH公私钥: SSH公私钥管理界面,点击下方”导入“,进入导入页面上传公私钥,     上传说明: 1) 讲所有的公私钥放到一个名为pvt的空文件夹中。 2) 在同样…

    Linux干货 2016-05-29