网络配置

1、基本网络配置

将Linux主机接入到网络,需要配置网络相关设置

  • 主机名
  • IP/netmask
  • 路由:默认网关
  • DNS服务器
    • 主DNS服务器
    • 次DNS服务器
    • 第三个DNS服务器

2、网卡名称

2.1、CentOS 6 之前版本网卡名称

#接口命名方式
以太网:eth[0,1,2,...]
ppp:ppp[0,1,2,...]

#网络接口识别并命名相关的udev配置文件
/etc/udev/rules.d/70-persistent-net.rules

#查看网卡
dmesg |grep –i eth
ethtool -i eth0

#卸载网卡驱动
modprobe -r e1000
rmmod e1000

#装载网卡驱动
modprobe e1000

2.2、CentOS 7 以上版网络配置

  • CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化;
  • CentOS 7 以上版使用基于硬件,设备拓扑和设置类型命名,可以保持网卡名称的稳定;
  • CentOS 8 中已弃用network.service,采用NetworkManager(NM)为网卡启用命令。
  • CentOS 8 仍可以安装network.service作为网卡服务,只是默认没有安装,具体方法为: dnf install network-scripts ,不过官方已明确在下一个大版本中,将彻底放弃network.service,不建议继续使用network.service管理网络。

systemd对网络设备的命名方式

  1. 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命
    名,如:eno1
  2. 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,
    如:ens1
  3. 如果硬件接口的物理位置信息可用,则根据此信息命名,如:enp2s0
  4. 如果用户显式启动,也可根据MAC地址进行命名,如:enx2387a1dc56
  5. 上述均不可用时,则使用传统命名机制
#基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot ,X:port

#网卡组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
#使用传统命名方式
#编辑/etc/default/grub配置文件,添加以下内容
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

#为grub2生成其配置文件
On a system with UEFI boot mode:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
On a system with legacy boot mode:
# grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /etc/grub2.cfg

#重启系统
reboot

#自定义网卡名
GRUB_CMDLINE_LINUX="... net.ifnames.prefix=<required prefix>"

3、网络配置命

3.1、主机名

#设置主机名
hostnamectl set-hostname <hostname>

#显示主机名
hostname
hostnamectl status

3.2、网络配置方式

  • 静态指定:
    • ifconfig, route, netstat
    • ip: object {link, addr, route}, ss, tc
    • system-config-network-tui,setup
    • 配置文件
  • 动态分配:
    • DHCP: Dynamic Host Configuration Protocol

3.3、ifconfig 命令

ifconfig可以查看网卡IP信息,配置IP等

#来自于net-tools包,可以使用ip代替
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
启用混杂模式:[-]promisc
#范例
#配置eth0上的IP
ifconfig eth0 192.168.1.1 netmask 255.255.0.0

#清除eth0上面的IP地址
ifconfig eth0 0.0.0.0

#启用和禁用网卡
ifconfig eth0 down
ifconfig eth0 up

#对一个网卡设置多个IP地址
ifconfig eth0:1 192.168.1.2/24

#查看端口流量信息
ifconfig -s

3.4、route 命令

路由表管理命令

路由表主要构成:

  • Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
  • Genmask:目标网络对应的netmask
  • Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
  • Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
  • Metric: 开销cost,值越小,路由记录的优先级最高
图片[1]-网络配置-李佳程的个人主页
#查看路由表
route
route -n

#添加路由
route add

#删除路由
route del
#范例
#目标: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
route add -net 192.168.8.0/24 dev eth1 metric 200

#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add -net 0.0.0.0/0 gw 172.16.0.1
route add default gw 172.16.0.1

#目标: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

3.5、配置动态路由

通过守护进程获取动态路由,安装quagga包,通过命令vtysh配置
支持多种路由协议:

  • RIP:Routing Information Protocol,路由信息协议
  • OSPF:Open Shortest Path First,开放式最短路径优先
  • BGP:Border Gateway Protocol,边界网关协议

3.6、netstat 命令

#来自于net-tools包,可以使用 ss 代替
#显示网络连接
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


#常用组合
-tan, -uan, -tnl, -unl

#显示路由表
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
#范例
#统计网络信息
[root@centos79 centos]# netstat -s
Ip:
    1273 total packets received
    0 forwarded
    0 incoming packets discarded
    1273 incoming packets delivered
    1041 requests sent out
Icmp:
    0 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
    0 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
Tcp:
    0 active connections openings
    2 passive connection openings
    0 failed connection attempts
    0 connection resets received
    2 connections established
    1113 segments received
    1035 segments send out
    0 segments retransmited
    0 bad segments received.
    1 resets sent
Udp:
    12 packets received
    0 packets to unknown port received.
    0 packet receive errors
    12 packets sent
    0 receive buffer errors
    0 send buffer errors
UdpLite:
TcpExt:
    11 delayed acks sent
    2 packets directly queued to recvmsg prequeue.
    907 packet headers predicted
    39 acknowledgments not containing data payload received
    107 predicted acknowledgments
    TCPRcvCoalesce: 6
    TCPAutoCorking: 1
    TCPOrigDataSent: 183
IpExt:
    InBcastPkts: 148
    InOctets: 102714
    OutOctets: 79976
    InBcastOctets: 16678
    InNoECTPkts: 1274
#显示接口统计数据
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--
numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s IFACE

#范例
[root@centos79 centos]# netstat -Ieth0
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500     1784      0      0 0          1533      0      0      0 BMRU
[root@centos79 centos]# ifconfig -s eth0
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500     1822      0      0 0          1553      0      0      0 BMRU
[root@centos79 centos]# netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.1.10:22         192.168.1.1:50057       ESTABLISHED
tcp        0     36 192.168.1.10:22         192.168.1.1:50056       ESTABLISHED

3.8、ip命令

#来自于iproute包,可用于代替ifconfig
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]::指定接口 ,up 仅显示处于激活状态的接口
#范例
#查看IP信息
ip a

#禁用网卡
ip link set eth1 down

#网卡改名
ip link set eth1 name wangnet

#启用网卡
ip link set wangnet up

#网卡别名
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
#ip route 用法
#添加路由:
ip route add TARGET via GW dev IFACE src SOURCE_IP
  TARGET:
    主机路由:IP
    网络路由:NETWORK/MASK

#添加网关:
ip route add default via GW dev IFACE

#删除路由:
ip route del TARGET

#显示路由:
ip route show|list

#清空路由表:
ip route flush [dev IFACE] [via PREFIX]

3.9、ss 命令

#来自于iproute包,代替netstat
#netstat 通过遍历 /proc来获取 socket信息,ss 使用 netlink与内核
tcp_diag 模块通信获取 socket 信息

ss [OPTION]... [FILTER]

#选项
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息

#格式说明
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 =

#常用组合
-tan, -tanl, -tanlp, -uan
#常见用法
#显示本地打开的所有端口
ss -l

#显示每个进程具体打开的socket
ss -pl

#显示所有tcp socket
ss -t -a

#显示所有的UDP Socekt
ss -u -a

#显示所有已建立的ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )'

#显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )'

#列出当前socket详细信息
ss -s

3.10、网络配置工具 nmcli

以下工具都依赖NetworkManager服务,此服务是管理和监控网络设置的守护进程

  • 图形工具
    • nm-connection-editor
  • 字符配置 tui工具:
    • nmtui
    • nmtui-connect
    • nmtui-edit
    • nmtui-hostname
  • 命令行工具
    • 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


#修改配置文件执行生效
nmcli con reload
nmcli con up con-name

图片[2]-网络配置-李佳程的个人主页
#范例
#查看帮助
nmcli con add help

#使用nmcli配置网络
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,不自动连接
nmcli 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 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

4、网络配置文件

4.1、网络基本配置文件

#IP、MASK、GW、DNS相关的配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
图片[3]-网络配置-李佳程的个人主页

4.2、配置当前主机的主机名

#CentOS 6 之前版本
/etc/sysconfig/network
HOSTNAME=

#centos7 之后版本
/etc/hostname
#默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain
#删除文件/etc/hostname,恢复主机名localhost.localdomain

4.3、本地主机名数据库和IP地址的映射

#优先于使用DNS前检查
#getent hosts 查看/etc/hosts 内容
/etc/hosts

4.4、DNS域名解析

/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search DOMAIN

4.5、路由相关的配置文件

/etc/sysconfig/network-scripts/route-IFACE
两种方式:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
#范例#
#CentOS7 创建/etc/sysconfig/static-routes文件添加持久静态路由
#查看network脚本调用路由文件
[root@centos79 ~]# grep -A 3 "/etc/sysconfig/static-routes" /etc/init.d/network
    if [ -f /etc/sysconfig/static-routes ]; then
        if [ -x /sbin/route ]; then
            grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
                /sbin/route add -$args
            done
        else

#查看当前路由
[root@centos79 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.2     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

#创建文件
[root@centos79 ~]# vim /etc/sysconfig/static-routes
any net 192.168.1.0/24 gw 192.168.1.254
any net 192.168.2.0/24 gw 192.168.1.254
[root@centos79 ~]# systemctl restart network

#确认路由生效
图片[4]-网络配置-李佳程的个人主页

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享