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基础

    第1题:描述计算机的组成及功能 1.1计算机的组成       计算机是有 运算器,控制器,存储器,输入设备和输出设备组成计算机 1.2计算机各部件功能 运算器 对数据进行算术运算,逻辑运算和对数据进行加工处理 存储器 存储程序,数据和各种信号,命令等信息,并在需要时提供这些信息 控制器 是整个计算机的中枢神…

    Linux干货 2017-07-02
  • 正则表达式

    正则表达式:             由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符            字面意义,而表示控制或通配的功能程序支持:  grep,sed,awk,vim,less…

    2017-08-05
  • 关于大型网站技术演进的思考(一):存储的瓶颈(1)

    原文出处: 夏天的森林  前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。 首先我们要思考一个问题,什么样的网站才是大型网…

    Linux干货 2015-02-26
  • N26_第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@node1 skel]# cp -r /etc/skel/home/tuser1 [root@node1 skel]# chmod go-wrx/home/tuser1/   2、编辑/etc/grou…

    Linux干货 2017-05-26
  • shell脚本(一)

     本周是来马哥教育的第四周,本周重点是shell脚本的编写,本篇博客也是以shell脚本的简述为主。 一.shell脚本的概念及意义     shell脚本是linux下的一种编程方式,百度百科给出这样的释义:脚本(shell script)是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一…

    Linux干货 2017-08-05
  • 学习宣言

            学习计划:每天至少2个小时的学习,循序渐进,先通读再精读。         学习目标:成为运维的高手,走上人生巅峰。      &nb…

    Linux干货 2016-10-25