接触linux服务器的朋友们,很少能避开虚拟机,笔者将在这里简单介绍虚拟机的网络配置
开启VMware之后,选择编辑
,可以看到虚拟网络编辑器
VMnet*这三个网络适配器(或者说虚拟机网卡),对于设置虚拟机网络至关重要。安装VMware workstation的时候,默认会安装3块虚拟网卡,分别是VMnet0、VMnet1、VMnet8。
虚拟网卡名 | 网络属性 | 定义 |
---|---|---|
VMnet0 | 物理网卡 | Bridge桥接 |
Vmnet1 | 虚拟网卡 | host-only仅主机 |
VMnet8 | 虚拟网卡 | NAT |
虚拟机网络配置有三种模式:Bridged桥接模式 、host-only仅主机模式、NAT模式。
VMnet0=eth2(Bridged)
Bridged桥接模式 :虚拟机相当于一台实体机,可以自由访问与被访问及上网
VMnet1=eth0(host-only)
host-only仅主机模式:虚拟机之间、主机与虚拟机之间互访,但虚拟机无法访问外网
VMnet8=eth8(nat)
NAT模式:虚拟机之间、主机与虚拟机之间互访,虚拟机可以通过主机访问外网,外网无法访问虚拟机
下面将详细介绍各种模式:
在桥接模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机(主机和虚拟机处于对等地位),它可以访问网内任何一台机器。在桥接模式下,我们往往需要为虚拟主机配置IP地址、子网掩码等(注意虚拟主机的ip地址要和主机ip地址在同一网段
)。
使用桥接模式的虚拟系统和主机的关系,就如同连接在一个集线器上的两台电脑;要让他们通讯就需要为虚拟系统配置ip地址和子网掩码。如果我们需要在局域网内建立一个虚拟服务器,并为局域网用户提供服务,那就要选择桥接模式。 但对于想进行种种网络实验的朋友这种模式是不太适合的,因为你无法对虚拟机的网络进行控制,它直接出去了。
1. 虚拟机中的Bridget桥接模式:
- 默认使用Vmnet0,不提供DHCP服务
- 虚拟机与物理机在同一个网段上,相当于一个独立的主机。
- 既能与局域网内的主机通讯,也能与外部网络通信。
- 容易与局域网其他主机引起ip地址冲突。
2. 使用桥接模式配置虚拟机网络
一、虚拟机设置:
在首次创建虚拟机系统的时候,可以选择网络模式,而非必须在虚拟网络编辑器
中设置,例如:
二、系统设置
[root@swarm-worker ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=dhcp
DEFROUTE=yes
#IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=01a121f0-4398-4079-b6d5-d0faf3b80b2e
DEVICE=ens33
#ONBOOT=no
IPADDR=192.168.70.183
GATEWAY=192.168.70.1
NETMASK=255.255.255.0
NAT是英文Network Address Translation的简写,中文意思为”网络地址转换“。它是一个IETF标准,允许一个整体单位机构以一个公用IP地址出现在互联网上。通俗讲就是把公司所有的电脑都能在一个公用IP地址下使用,能够一定程度上解决局部公用IP地址不足问题。
1. 虚拟机中的NAT模式:
- 默认使用VMnet8,提供DHCP服务。
- 可以与物理机互相访问,也可访问外部网络。
- 不能访问局域内其他机器或被访问。
- 不会与局域网内其他ip地址发生冲突。
2. 使用NAT模式配置虚拟机网络
一、虚拟机设置:
将主机虚拟适配器连接到此网络
NAT 设置
中的网关IP,此处默认即可,记住这个网关,后面在系统中配置会使用ip a
查看网卡名称[root@zabbix-svr-2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:36:09:84 brd ff:ff:ff:ff:ff:ff
inet 192.168.107.183/24 brd 192.168.107.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
第一个是回环地址,忽略掉,第二个ens33才是/etc/sysconfig/network-scripts/ifcfg-ens33
[root@zabbix-svr-2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
NAME=ens33
UUID=d7519cdd-2e61-469f-86e4-08143d446c92
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.107.183
GATEWAY=192.168.107.2
NETMASK=255.255.255.0
[root@zabbix-svr-2 ~]# systemctl restart network
SCSI控制器的英文名称是“Small Computer System Interface”,中文翻译为"小型计算机系统专用接口";顾名思义,这是为了小型计算机设计的扩充接口,它可以让计算机加装其他外设设备以提高系统性能或增加新的功能,例如硬盘、光驱、扫描仪等。
与网络相关的文件
配置文件修改属性/etc/sysconfig/network-scripts/ifcfg-[IFACE]
参数格式:
[PARAMETER]=[
option|OPTION]
注意事项:
[root@zabbix-svr-2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=ETHERNET
NAME=ENS33
BOOTPROTO=STATIC
UUID=d7519cdd-2e61-469f-86e4-08143d446c92
DEVICE=ens33
ONBOOT=YES
IPADDR=192.168.70.183
GATEWAY=192.168.70.1
NETMASK=255.255.255.0
参数:
TYPE=Ethernet #接口类型;常见有的 Ethernet(以太网卡) Bridge(网桥)
BOOTPROTO=none #BOOTPROTO=[none|static|bootp|dhcp](引导时不使用协议|静态分配|BOOTP协议|DHCP协议),dhcp 表示动态获取IP地址, static 表示静态IP,none表示不指定,就是静态。
DEFROUTE=yes #default route,是否把这个eth设置为默认路由
IPV4_FAILURE_FATAL=no #如果为yes,则ipv4配置失败禁用设备
IPV6INIT=yes #是否启用IPv6的接口
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no #如果ipv6配置失败禁用设备
NAME=xxxxx #网卡名
UUID=XXXX #设备的惟一标识
DEVICE=xxxxx #此配置文件应用到的设备
ONBOOT=yes #在系统引导时是否激活此设备
DNS1=8.8.8.8 #第一个DNS服务器指向
DNS2=192.168.1.1 #第二个DNS服务器指向
NETMASK=255.255.255.0 #子网掩码
IPADDR=192.168.1.8 #指明IP地址
PREFIX=24 #子网掩码24位,替换NETMASK的新格式,和netmask选择配置一个即可
GATEWAY=192.168.1.1 #默认网关
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
HWADDR= #对应的设备的MAC地址
NM_CONTROLLED= #NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”,
USERCTL= #普通用户是否可控制此设备
bridge(桥接)
常见配置:
[root@zabbix-svr-2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
NAME=ens33
BOOTPROTO=static
UUID=d7519cdd-2e61-469f-86e4-08143d446c92
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.70.183
GATEWAY=192.168.70.1
NETMASK=255.255.255.0
启动网络服务相关命令
systemctl restart network
systemctl start network
systemctl stop network
systemctl status network
在Ubuntu系的Linux系统里,与网络相关的主要设置文件如下:
与网络相关的主要设置文件
常见配置:
root@ubuntu:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens33
iface ens33 inet static
address 192.168.72.140
netmask 255.255.255.0
gateway 192.168.72.1
修改DNS
root@lenovo-07:/etc# cat resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
...
# operation for /etc/resolv.conf.
nameserver 211.137.191.26
nameserver 223.5.5.5
重启服务
#刷新网络接口
root@lenovo-07:/etc/netplan# sudo ip addr flush eno1
#重启网络服务
root@lenovo-07:/etc/netplan# sudo systemctl restart networking.service
在18.04以后,默认以netplan的方式配置网络,请参考:
Netplan
配置文件
root@lenovo-07:/etc/netplan# ls
01-network-manager-all.yaml
root@lenovo-07:/etc/netplan# cat 01-network-manager-all.yaml
network:
ethernets:
eno1: #网卡名字
dhcp4: no #是否自动配置ip
dhcp6: no #是否自动配置ipv6
addresses: [*.*.*.*/24] #IP地址用,隔开 / 后面的为子网
gateway4: *.*.*.1 #网关
nameservers:
addresses: [114.114.114.114,8.8.8.8] #设置DNS服务器,能上大部分网站,且有概率提升下载速度
# DHCP
eno2:
dhcp4: true
addresses: []
# Static
eno3:
addresses: [192.168.225.50/24]
dhcp4: no
dhcp6: no
gateway4: 192.168.225.1
nameservers:
addresses: [114.114.114.114,8.8.8.8]
version: 2
激活配置
root@lenovo-07:/etc/netplan# sudo netplan apply
或
root@lenovo-07:/etc/netplan# sudo netplan --debug apply # 此命令可查看配置生效情况,可根据提示进行修改调整
Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。
NAME
ip - show / manipulate routing, devices, policy routing and tunnels
SYNOPSIS
ip [ OPTIONS ] OBJECT { COMMAND | help }
OPTIONS:
命令 | 作用 |
---|---|
-V | 显示指令版本信息 |
-f [family] | 指定要使用的协议。协议标识可以是inet、inet6、ipx、dnet、bridge、link 之一。如果此选项不存在,则从其他参数中推测协议族。如果命令行的其余部分没有提供足够的信息来推测该族,则ip会退回到默认值,通常是 inet 或 any 。link 是一个特殊的系列标识符,表示不涉及网络协议。 |
-s | 输出更为详细的信息。如果这个选项出现两次或者多次,输出的信息将更为详细。 |
-4 | 是 -f inet 的简写。 |
-6 | 是 -f inet6 的简写。 |
-0 | 是 -f link 的简写。 |
-o | 对每条记录都使用单行输出。 |
-r | 查询域名解析系统,用获得的主机名代替主机IP地址。 |
OBJECT:
可以针对哪些网络参数进行动作,包括有:
对象 | 说明 |
---|---|
address | 网络设备的IP(v4或者v6)地址信息 |
link | 网络设备信息 |
maddress | 多播地址 |
mourte | 组播路由缓存条目 |
monitor | 监控网络链接消息 |
netns | 管理网络命名空间 |
ntable | 管理邻居表缓存操作 |
neighbour | 邻居表 |
route | 路由表 |
rule | IP策略 |
tunnel | IP隧道 |
tuntap | 管理tun/tap设备 |
COMMAND:
对象 | 说明 |
---|---|
add | 新增 |
delete | 删除 |
show(or list) | 显示 |
set | 设置参数 |
由于该命令涉及功能实在庞大,所以挑选些常用的进行演示:
address是最常用的option之一,主要针对ip地址设置
显示当前IP地址信息
可以写成
ip address 或 ip addr 或 ip ad 或 ip a
由于在OBJECT中只有address以a为首字母,所以只要能区分出来是address,那么address|addr|ad|a都可以
[root@node1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
...
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.71.183/24 brd 192.168.71.255 scope global noprefixroute dynamic ens33
valid_lft 83848sec preferred_lft 83848sec
inet6 fe80::3872:4f8b:dbfc:1aa2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
...
给设备enp0s8设置ip地址(临时)
ip addr add 192.168.1.200/24 dev enp0s8
给设备enp0s8移除ip地址
[root@node1 ~]# ip addr add 192.168.71.184/24 dev ens33
[root@node1 ~]# ip addr del 192.168.71.184/24 dev ens33
link是针对设备设置的option
[root@node1 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:79:08:6b brd ff:ff:ff:ff:ff:ff
[root@node1 ~]# ip l set ens33 up
ip link set dev enp0s8 promisc on
ip link set enp0s8 mtu 1000
ip link set enp0s8 address a0:0a:b0:0b:c0:0c
ip link add r1-inside type veth peer name r1-outside
route是设置路由相关信息的option
[root@node1 ~]# ip route
default via 192.168.71.1 dev ens33 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1
192.168.71.0/24 dev ens33 proto kernel scope link src 192.168.71.183 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
显示路由表做简要说明如下:
[root@node1 ~]# ip route
default via 192.168.71.1 dev ens33 proto dhcp metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev docker_gwbridge proto kernel scope link src 172.18.0.1
192.168.71.0/24 dev ens33 proto kernel scope link src 192.168.71.183 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
ip route add default via 10.0.3.254 dev enp0s8
ip route deletedefault via 10.0.3.254 dev enp0s8
rule是策略路由相关的option
基于策略的路由比传统路由在功能上更强,使用更灵活,它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。
在linux系统中,一条路由策略rule主要包含三个信息,即rule的优先级,条件,路由表。其中rule的优先级数字越小表示优先级越高,然后是满足什么条件下由指定的路由表来进行路由。
在linux系统启动时,内核会为路由策略数据库配置三条缺省的规则,即rule 0,rule 32766, rule 32767(数字是rule的优先级,0优先级最高)
[root@node1 ~]# ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
在linux系统中是按照rule的优先级顺序依次匹配。假设系统中只有优先级为0,32766及32767这三条规则。那么系统首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到匹配的路由;如果没有找到路由,就会匹配下一个不空的规则,在这里只有32766规则,那么将会在主路由表里寻找路由;如果没有找到匹配的路由,就会依据32767规则,即寻找默认路由表;如果失败,路由将失败。
有3个默认的规则,在/etc/iproute2/rt_tables中存储。
[root@node1 ~]# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
...
进行路由时,正是根据路由规则来进行匹配,按优先级从高到低匹配,直到找到合适的规则.所以在应用中配置默认路由是必要的
语法:
[root@node1 ~]# ip rule help
Usage: ip rule { add | del } SELECTOR ACTION
ip rule { flush | save | restore }
ip rule [ list [ SELECTOR ]]
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]
[ iif STRING ] [ oif STRING ] [ pref NUMBER ] [ l3mdev ]
[ uidrange NUMBER-NUMBER ]
ACTION := [ table TABLE_ID ]
[ nat ADDRESS ]
[ realms [SRCREALM/]DSTREALM ]
[ goto NUMBER ]
SUPPRESSOR
SUPPRESSOR := [ suppress_prefixlength NUMBER ]
[ suppress_ifgroup DEVGROUP ]
TABLE_ID := [ local | main | default | NUMBER ]
SELECTOR具体参数如下:
From — 源地址
To — 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos — IP包头的TOS(type of sevice)域
Dev — 物理接口
Fwmark — 防火墙参数
ACTION动作:
Table 指明所使用的表
Nat 透明网关
Action prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息
Reject 单纯丢弃该包
Unreachable丢弃该包, 并发送 NET UNREACHABLE的ICMP信息
策略路由一般手工添加路由表,路由表的添加只需编辑rt_tables文件,规定表序号,表名即可
ip rule add from 192.168.1.112/32 [tos 0x10] table 202 pref 999 prohibit
ip rule add to 192.168.1.2 pref 1000 table 201
ip rule add from 192.168.1.0/24 pref 1001 table 201
ip rule add [from 0/0] table test1 pref 1003
以上内容参考乐大师
ifcfg命令家族:ifconfig、route和netstat
前文提到ifcfg命令家族功能和ip相似,并且长时间未维护,很有可能被ip取代,所以本文将简要介绍
ifconfig命令的英文全称是“network interfaces configuring”,即用于配置和显示Linux内核中网络接口的网络参数。
用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
此工具在net-tools工具包中,可以通过yum install net-tools
安装
NAME
ifconfig - configure a network interface
SYNOPSIS
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
interface:接口的名称。这通常是一个驱动程序名,后面跟着一个单元号,例如用于第一个以太网接口的eth0。
选项options
选项 | 说明 |
---|---|
up | 此标志将导致激活接口。如果将地址分配给接口,则会隐式指定该地址。 |
down | 此标志导致关闭此接口的驱动程序。 |
[-]arp | 启用或禁用在此接口上使用ARP协议。 |
[-]promisc | 启用或禁用接口的混杂模式。如果选中,网络上的所有数据包都将由接口接收。混杂模式是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。 |
[-]allmulti | 启用或禁用所有多播模式。如果选中,则接口将接收网络上的所有多播数据包。 |
metric N | 此参数设置接口度量。它在GNU/Linux下不可用 |
mtu N | 此参数设置接口的最大传输单元(MTU)。 |
dstaddr addr | 为点对点链路(如PPP)设置远程IP地址.这个关键字现在已经过时了;使用pointopoint关键字代替。 |
netmask addr | 设置此接口的IP网络掩码。此值默认为通常的A、B或C类网络掩码(从接口IP地址派生),但可以设置为任何值。 |
add addr/prefixlen | 向接口添加IPv 6地址 |
del addr/prefixlen | 从接口中删除IPv 6地址 |
tunnel ::aa.bb.cc.dd | 创建一个新的SIT(IPv6-in-IPv4)设备,通过隧道到达给定的目的地。 |
irq addr | 设置此设备使用的中断行。并非所有设备都可以动态更改其IRQ设置。 |
io_addr addr | 为该设备设置I/O空间中的起始地址 |
mem_start addr | 设置此设备使用的共享内存的起始地址。只有少数几个设备需要这个 |
media type | 设置设备要使用的物理端口或介质类型。并非所有设备都可以更改此设置,以及那些可以更改其支持的值的设备。典型的类型值是10 base 2(细以太网)、10 base T(双绞线10 Mbps以太网)、AUI(外收发信机)等。驱动的特殊介质类型可以用来告诉驱动对媒体进行自动感知。同样,并不是所有的驱动都能做到这一点。 |
[-]broadcast [addr] | 如果地址参数给定,则为该接口设置协议广播地址。否则,设置(或清除)接口的IFF_BROADCAST标志。 |
[-]pointopoint [addr] | 这个关键字启用了接口的点对点模式,这意味着它是两台机器之间的直接链接,没有其他人监听它。如果地址参数也给出了,就像过时的dstaddr关键字一样,设置链接另一端的协议地址。否则,设置或清除接口的IFF_POINTOPOINT标志。 |
hw class address | 如果设备驱动程序支持此操作,则设置此接口的硬件地址(mac地址)。关键字后面必须跟着硬件类的名称和相当于硬件地址的可打印的ASCII。目前支持的硬件类包括ether (以太网)、ax25(AMPRAX.25)、ARCnet和netrom(AMPR NET/ROM)。 |
multicast | 在接口上设置多播标志。这通常不应该需要,因为驱动程序本身设置正确的标志。 |
address | 要分配给此接口的IP地址。 |
txqueuelen length | 设置设备的传输队列的长度。对于具有高延迟(调制解调器链路,ISDN)的较慢设备,将其设置为小值是有用的,以防止快速批量传输过多地干扰诸如telnet之类的交互通信。 |
ifconfig [interface]
[root@node1 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.71.183 netmask 255.255.255.0 broadcast 192.168.71.255
inet6 fe80::3872:4f8b:dbfc:1aa2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:79:08:6b txqueuelen 1000 (Ethernet)
RX packets 14790 bytes 1205753 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1636 bytes 148104 (144.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 19 base 0x2000
ifconfig IFACE IP/MASK [up/down]
[root@node1 ~]# ifconfig ens33 192.168.71.184/24 down #好的,连不上了
[root@node1 ~]# ifconfig ens33 192.168.71.184/24 up
注意:地址及掩码可缺省
也可以以这种形式:
ifconfig ens33 192.168.71.184 netmask 255.255.255.0 down
ifconfig IFACE IP netmask NETMASK
[root@node1 ~]# ifconfig ens33 192.168.71.184/24
重启后失效,如果要长久使用,则需要修改配置文件
[root@node1 ~]# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
docker_gwbridge 1500 3472 0 0 0 534 0 0 0 BMU
ens33 1500 3472 0 0 0 534 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
[root@node1 ~]# ifconfig docker0 hw ether 00:0c:29:49:e3:f4
route命令:路由查看及管理,路由条目类型:
1. 主机路由:目标地址为单个ip
2. 网络路由:目标地址为ip网络
3. 默认路由:目标为任意主机,0.0.0./0.0.0.0
1. 查看
route -n 显示数字ip,不加n反解地址及端口号
[root@node1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.71.1 0.0.0.0 UG 100 0 0 ens33
192.168.71.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
[root@node1 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
192.168.71.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
U表示活跃,G表示网关
2. 添加
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] if]
1 - net 网络路由,host主机路由
2 - target 网络地址
3 - netmask 子网掩码
4 - gw 网关,下一跳地址
示例1:
route add -net 192.168.72.0/24(或写为netmask 255.255.255.0) gw 192.168.20.1 dev enp1s0
解释:
192.168.72.0为指定到达的网络
192.168.20.1为下一跳的网关,必须与自己的某块网卡在同一网络中
dev enp1s0 由哪个网卡访问,可省略
route -n
192.168.72.0 192.168.20.1 255.255.255.0 UG 0 0 0 enp1s0
示例2:
route add default gw 192.168.0.1 #添加默认网关
3. 删除
route del [-net|-host] target [netmask Nm] [gw GW] [[dev] if]
示例1:
route del -net 192.168.72.0/24 [gw 192.168.20.1] #网关可缺省
示例2:
route del default
Print network connections, routing tables, interface statistics, masquerade connec‐tions, and multicast memberships
netstat -rn
和route -n大体相似
-r 显示内核路由表
-n 不反解ip为主机名
[root@node1 ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.71.1 0.0.0.0 UG 0 0 0 ens33
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
netstat [-t/--tcp][-u/--udp]
参数 | 说明 |
---|---|
-t | tcp协议相关链接,均有其状态:FSM (finite state machine,有限状态机) |
-u | udp协议相关 |
-w | 裸套接字相关连接 |
-l | 处于监听状态的连接,不加表示已建立 |
-a | 所有状态,不加表示当前只处于连接中的,不包括-l |
-n | 以数字格式显示ip |
-e | 扩展格式 |
-p | 显示相关进程和pid |
常用组合:-nltp,-nlup, -tan, -uan
[root@node1 ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 857/rpcbind
...
tcp6 0 0 ::1:25 :::* LISTEN 1347/master
[root@node1 ~]# netstat -nlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 192.168.122.1:53 0.0.0.0:* 1636/dnsmasq
...
udp 0 0 0.0.0.0:602 0.0.0.0:* 857/rpcbind
netstat -i/-I<无空格>[IFACE] # IFACE为接口名字
① 所有接口:
[root@node1 ~]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 40099 1 9 0 6142 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
② 指定接口:
netstat -I<eth1> #不能加空格
[root@node1 ~]# netstat -Iens33
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 42409 1 9 0 6364 0 0 0 BMRU
RHEL 和 CentOS 系统默认使用 NetworkManager 来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用 nmcli 命令来管理 NetworkManager 服务。nmcli 是一款基于命令行的网络配置工具,功能丰富,参数众多。
mcli命令 是一个非常丰富和灵活的命令行工具,可以完成网卡上的所有配置,并可以写入配置文件中
centos默认安装,而ubuntu需要手动安装apt install network-manager
SYNOPSIS
NAME
nmcli - command-line tool for controlling NetworkManager
SYNOPSIS
nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent | monitor} [COMMAND] [ARGUMENTS...]
OPTIONS
选项 | 作用 |
---|---|
-t | 简洁输出,会将多余的空格删除, |
-p | 人性化输出,输出很漂亮 |
-n | 优化输出,有两个选项tabular(不推荐)和multiline(默认) |
-c | 颜色开关,控制颜色输出(默认启用) |
-f | 过滤字段,all为过滤所有字段,common打印出可过滤的字段 |
-g | 过滤字段,适用于脚本,以:分隔 |
-w | 超时时间 |
COMMANDS
nmcli general {status|hostname|permissions|logging}
[root@node1 ~]# nmcli gen status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
[root@node1 ~]# nmcli gen hostname node1-centos
[root@node1 ~]# cat /etc/hostname
node1-centos
[root@node1 ~]# nmcli gen permission
PERMISSION VALUE
org.freedesktop.NetworkManager.enable-disable-network yes
org.freedesktop.NetworkManager.enable-disable-wifi yes
org.freedesktop.NetworkManager.enable-disable-wwan yes
...
[root@node1 ~]# nmcli gen logging
LEVEL DOMAINS
INFO
PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY
命令格式:nmcli networking {on|off|connectivity}
命令描述:查询网络管理器网络状态,开启和关闭网络
选项:
on: 开启所有接口
off: 禁用所有接口
connectivity: 获取网络状态,可选参数check告诉网络管理器重新检查连接性,否则显示最近已知的状态。而无需重新检查。(可能的状态如下所示)
- none: 主机为连接到任何网络
- portal: 无法到达完整的互联网
- limited: 主机已连接到网络,但无法访问互联网
- full: 主机连接到网络,并具有完全访问
- unknown: 无法找到连接状态
[root@node1 ~]# nmcli networking connectivity
full
[root@node1 ~]# nmcli networking connectivity check
full
[root@node1 ~]# nmcli networking off
[root@node1 ~]#
Network error: Software caused connection abort #好的,连不上了
命令格式:nmcli connection {show|up|down|modify|add|edit|clone|delete|monitor|reload|load|import|export}
这是主要使用的一个功能
show
show有两种用法,分别是:
① 列出活动的连接,或进行排序(±为升降序)
# 查看所有连接状态
[root@www ~]# nmcli connection show
# 等同于nmcli connection show --order +active
[root@www ~]# nmcli connection show --active
# 以活动的连接进行排序
[root@www ~]# nmcli connection show --order +active
# 将所有连接以名称排序
[root@www ~]# nmcli connection show --order +name
# 将所有连接以类型排序(倒序)
[root@www ~]# nmcli connection show --order -type
② 查看指定连接的详细信息
[root@node1 ~]# nmcli connection show --order +name
NAME UUID TYPE DEVICE
System ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet --
Wired connection 1 e741eeb8-242e-3dad-8f70-df385496b90f ethernet --
Wired connection 2 d05a7dea-7039-39c7-9089-d462f1402c4b ethernet ens33
[root@node1 ~]# nmcli connection show ens33
Error: ens33 - no such connection profile. #奇怪并不好用
up/down
激活连接/停用连接,提供连接名称或uuid进行激活,若未提供,则可以使用ifname指定设备名进行激活。
[root@node1 ~]# nmcli conn up ifname ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
nmcli connection show eth0
进行获取,然后可以修改、添加或删除属性,若要设置属性,只需指定属性名称后跟值,空值将删除属性值,同一属性添加多个值使用+
。同一属性删除指定值用-
加索引。
# 添加三个
[root@www ~]# nmcli connection modify eth0 +ipv4.addresses 192.168.100.102/24
[root@www ~]# nmcli connection modify eth0 +ipv4.addresses 192.168.100.103/24
[root@www ~]# nmcli connection modify eth0 +ipv4.addresses 192.168.100.104/24
# 查看
[root@www ~]# nmcli -f IP4 connection show eth0
IP4.ADDRESS[1]: 192.168.100.101/24
IP4.GATEWAY: 192.168.100.100
IP4.DNS[1]: 8.8.8.8
# 启用配置
[root@www ~]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/18)
# 再次查看
[root@www ~]# nmcli -f IP4 connection show eth0
IP4.ADDRESS[1]: 192.168.100.101/24
IP4.ADDRESS[2]: 192.168.100.102/24
IP4.ADDRESS[3]: 192.168.100.103/24
IP4.ADDRESS[4]: 192.168.100.104/24
IP4.GATEWAY: 192.168.100.100
IP4.DNS[1]: 8.8.8.8
[root@www ~]# nmcli -f IP4 connection show eth0
IP4.ADDRESS[1]: 192.168.100.101/24
IP4.ADDRESS[2]: 192.168.100.102/24
IP4.ADDRESS[3]: 192.168.100.103/24
IP4.ADDRESS[4]: 192.168.100.104/24
IP4.GATEWAY: 192.168.100.100
IP4.DNS[1]: 8.8.8.8
# 删除索当前索引为2的地址
[root@www ~]# nmcli connection modify eth0 -ipv4.addresses 2
# 查看
[root@www ~]# nmcli -f IP4 connection show eth0
IP4.ADDRESS[1]: 192.168.100.101/24
IP4.ADDRESS[2]: 192.168.100.102/24
IP4.ADDRESS[3]: 192.168.100.103/24
IP4.ADDRESS[4]: 192.168.100.104/24
IP4.GATEWAY: 192.168.100.100
IP4.DNS[1]: 8.8.8.8
# 再次激活
[root@www ~]# nmcli connection up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/19)
# 查看
[root@www ~]# nmcli -f IP4 connection show eth0
IP4.ADDRESS[1]: 192.168.100.101/24
IP4.ADDRESS[2]: 192.168.100.102/24
IP4.GATEWAY: 192.168.100.100
IP4.DNS[1]: 8.8.8.8
[root@www ~]# nmcli con add con-name eth1 type ethernet autoconnect yes ifname eth0
# con-name 连接名称
# type 连接类型
# autoconnect 是否自动连接
# ifname 连接到的设备名称
更多的类型或方法可以使用nmcli connection add help查看。
克隆连接,克隆一个存在的连接,除了连接名称和uuid是新生成的,其他都是一样的。
[root@www ~]# nmcli connection clone eth0 eth0_1
删除连接,这将删除一个连接。
[root@www ~]# nmcli connection delete eth0_1
从磁盘加载/重新加载一个或多个连接文件,例如你手动创建了一个/etc/sysconfig/network-scripts/ifcfg-ethx连接文件,你可以将其加载到网络管理器,以便管理。
[root@www ~]# echo -e "TYPE=Ethernet\nNAME=ethx" > /etc/sysconfig/network-scripts/ifcfg-ethx
[root@www ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eth0
[root@www ~]# nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ethx
[root@www ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eth0
ethx d45d97fb-8530-60e2-2d15-d92c0df8b0fc 802-3-ethernet --
监视连接配置文件活动。每当指定的连接更改时, 此命令都会打印一行。要监视的连接由其名称、UUID 或 D 总线路径标识。如果 ID 不明确, 则可以使用关键字 id、uuid 或路径。有关 ID 指定关键字的说明, 请参阅上面的连接显示。
监视所有连接配置文件, 以防指定无。当所有监视的连接消失时, 该命令将终止。如果要监视连接创建, 请考虑使用带有 nmcli 监视器命令的全局监视器
[root@www ~]# nmcli connection monitor eth0
命令格式:nmcli device {status|show|set|connect|reapply|modify|disconnect|delete|monitor|wifi|lldp}
显示和管理设备接口。该选项有很多功能,例如连接wifi,创建热点,扫描无线,邻近发现等,下面仅列出常用选项。详细功能可使用nmcli device help
查看。
status
打印设备状态,如果没有将命令指定给nmcli device,则这是默认操作。
[root@www ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
lo loopback unmanaged --
[root@www ~]# nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
lo loopback unmanaged --
show
显示所有设备接口的详细信息。
# 不指定设备接口名称,则显示所有接口的信息
[root@www ~]# nmcli device show eth0
GENERAL.DEVICE: eth0
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:99:9A:A1
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: eth0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/9
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.100.101/24
IP4.ADDRESS[2]: 192.168.100.102/24
IP4.GATEWAY: 192.168.100.100
IP4.DNS[1]: 8.8.8.8
set
设置设备属性
[root@www ~]# nmcli device set ifname eth0 autoconnect yes
connect
连接设备。提供一个设备接口,网络管理器将尝试找到一个合适的连接, 将被激活。它还将考虑未设置为自动连接的连接。(默认超时为90s)
[root@www ~]# nmcli dev connect eth0
Device 'eth0' successfully activated with '5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03'.
reapply(重新申请)
使用上次应用后对当前活动连接所做的更改来更新设备。
[root@www ~]# nmcli device reapply eth0
Connection successfully reapplied to device 'eth0'.
modify
修改设备上处于活动的设备,但该修改只是临时的,并不会写入文件。(语法与 nmcli connection modify 相同)
[root@www ~]# nmcli device modify eth0 +ipv4.addresses 192.168.100.103/24
Connection successfully reapplied to device 'eth0'.
[root@www ~]# nmcli dev show eth0
[root@www ~]# nmcli device modify eth0 -ipv4.addresses 1
Connection successfully reapplied to device 'eth0'.
disconnect
断开当前连接的设备,防止自动连接。但注意,断开意味着设备停止!但可用 connect 进行连接
[root@www ~]# nmcli device disconnect eth0
delete
删除设备,该命令从系统中删除接口。请注意, 这仅适用于诸如bonds, bridges, teams等软件设备。命令无法删除硬件设备 (如以太网)。超时时间为10秒
[root@www ~]# nmcli device delete bonds
monitor
监视设备活动。每当指定的设备更改状态时, 此命令都会打印一行。
监视所有设备以防未指定接口。当所有指定的设备消失时, 监视器将终止。如果要监视设备添加, 请考虑使用带有 nmcli 监视器命令的全局监视器。
[root@www ~]# nmcli device monitor eth0
mcli 如果成功退出状态值为0,如果发生错误则返回大于0的值。
状态码 | 说明 |
---|---|
0 | 成功-指示操作已成功 |
1 | 位置或指定的错误 |
2 | 无效的用户输入,错误的nmcli调用 |
3 | 超时了(请参阅 --wait 选项) |
4 | 连接激活失败 |
5 | 连接停用失败 |
6 | 断开设备失败 |
7 | 连接删除失败 |
8 | 网络管理器没有运行 |
10 | 连接、设备或接入点不存在 |
65 | 当使用 --complete-args 选项,文件名应遵循。 |
ifup - bring a network interface up
ifdown - take a network interface down
ifup iface/ifdown iface
启用关闭网卡
注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-iface来识别接口并完成配置,所以没有配置文件无法使用此命令
hostname命令:
查看:hostname
配置:hostname HOSTNAME
重启后失效
hostnamectl命令:
hostnamectl status显示当前主机名设定
hostnamectl set-hostname abc 设置主机名
设置立即生效,而且会写入/etc/hostname文件
修改配置文件:/etc/hostname
root@ubuntu:~# cat /etc/hostname
ubuntu1
重启后生效
nmcli gen hostname
[root@node1 ~]# nmcli gen hostname node1-centos
[root@node1 ~]# cat /etc/hostname
node1-centos
设置立即生效,而且会写入/etc/hostname文件
配置文件/etc/resolv.conf
nameserver 8.8.8.8
注意:最多可以设置3个域名
配置文件:/etc/hosts
192.168.70.128 cluster-endpoint
用于显示socket状态
ss [option] [filter]
option选项:
选项 | 说明 |
---|---|
-t | tcp |
-u | udp |
-w | raw socket |
-l | 监听连接 |
-a | 所有状态 |
-n | 数字格式 |
-p | 相关程序及其pid |
-e | 扩展格式信息 |
-m | 内存用量 |
-o | 计时器信息 |
[root@node1 ~]# ss -nltp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
...
LISTEN 0 128 [::]:80 [::]:* users:(("nginx",pid=1354,fd=7),("nginx",pid=1353,fd=7),("nginx",pid=1352,fd=7))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1155,fd=4))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=1347,fd=13))
[root@node1 ~]# ss -nltp|grep 22
LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1636,fd=6))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1155,fd=3))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1155,fd=4))
详细参考:Linux之ss命令
CentOS的网络配置文件路径位于/etc/sysconfig/network-scripts/目录下,其中ifcfg-*
文件为网络接口的配置文件,route-*
文件为路由配置文件
永久添加路由 重启network服务生效 支持用#注释
方法一
a、添加默认网关,即默认路由
两块网卡在配置文件ifcfg-ethX中不配置网关,在/etc/sysconfig/network中设置默认网关
vim /etc/sysconfig/network
GATEWAY=192.168.14.254
b、添加路由 创建/etc/sysconfig/static-routes配置文件
vim /etc/sysconfig/static-routes
any net 192.168.15.0/24 gw 192.168.14.254
any host 123.57.223.144 gw 192.168.14.254
any host 123.57.190.33/32 gw 192.168.8.1
方法二
在/etc/sysconfig/network-scripts/下创建配置文件route-ethX
vim /etc/sysconfig/network-scripts/route-eth0
0.0.0.0/0 via 192.168.14.254 dev eth0 这条为默认路由,另一种格式 default 192.168.14.254 dev eth0
192.168.15.0/24 via 192.168.14.254 dev eth0
123.57.223.144 via 192.168.14.254 dev eth0
vim /etc/sysconfig/network-scripts/route-eth1
123.57.190.33 via 192.168.8.1 dev eth1
配置完重启服务 service network restart
[root@node-252 ~]# sysctl -a |grep port_range
net.ipv4.ip_local_port_range = 32768 60999
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"