基本网络配置
- 主机名
- IP/netmask
- 路由:默认网关
- DNS服务器
主DNS服务器
次DNS服务器
第三个DNS服务器
ifconfig命令
#设置网卡[root@centos8 ~]#ifconfig ens37 10.0.0.110 netmask 255.255.255.0#设置多个[root@centos8 ~]#ifconfig ens37:1 10.0.0.120/24[root@centos8 ~]#ifconfigens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255inet6 fe80::7d57:ca2b:75ea:b18c prefixlen 64 scopeid 0x20<link>ether 00:0c:29:9f:5f:fe txqueuelen 1000 (Ethernet)RX packets 867 bytes 86730 (84.6 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 286 bytes 38872 (37.9 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.110 netmask 255.255.255.0 broadcast 10.0.0.255ether 00:0c:29:9f:5f:08 txqueuelen 1000 (Ethernet)RX packets 452 bytes 34365 (33.5 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 87 bytes 11110 (10.8 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens37:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.0.0.120 netmask 255.255.255.0 broadcast 10.0.0.255ether 00:0c:29:9f:5f:08 txqueuelen 1000 (Ethernet)[root@centos8 ~]#ifconfig -sIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgens33 1500 870 0 0 0 286 0 0 0 BMRUens37 1500 503 0 0 0 117 0 0 0 BMRUens37:1 1500 - no statistics available - BMRUlo 65536 62 0 0 0 62 0 0 0 LRUvirbr0 1500 0 0 0 0 0 0 0 0 BMU
route命令
路由表管理命令
routeroute -n[root@centos8 ~]#routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault _gateway 0.0.0.0 UG 100 0 0 ens3310.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3710.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0[root@centos8 ~]#route -nKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 ens3310.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3710.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
路由表主要构成:
- Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
- Genmask:目标网络对应的netmask
- Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
- Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
- Metric: 开销cost,值越小,路由记录的优先级最高
添加:route add
route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]
删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
范例:
#目标:192.168.1.3 网关:172.16.0.1route add -host 192.168.1.3 gw 172.16.0.1 dev eth0#目标:192.168.0.0 网关:172.16.0.1route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0route add -net 192.168.8.0/24 dev eth1 metric 200#默认路由,网关:172.16.0.1route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1route add -net 0.0.0.0/0 gw 172.16.0.1route add default gw 172.16.0.1#目标:192.168.1.3 网关:172.16.0.1route del -host 192.168.1.3#目标:192.168.0.0 网关:172.16.0.1route del -net 192.168.0.0 netmask 255.255.255.0
范例:实现静态路由
环境:
四台主机:A主机:eth0 NAT模式R1主机:eth0 NAT模式,eth1 仅主机模式R2主机:eth0 桥接模式,eth1 仅主机模式B主机:eth0 桥接模式

#配置A主机ifconfig eth0 10.0.0.123/8route add -net 10.0.0.0/8 dev eth0route add default gw 10.0.0.200 dev eth0#配置R1ifconfig eth0 10.0.0.200/8ifconfig eth1 192.168.0.200/24route add -net 10.0.0.0/8 dev eth0route add -net 192.168.0.0/24 dev eth1route add -net 172.16.0.0/16 gw 192.168.0.201 dev eth1 #重点echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发功能#配置R2ifconfig eth0 172.16.0.200/16ifconfig eth1 192.168.0.201/24route add -net 192.168.0.0/24 dev eth1route add -net 172.16.0.0/16 dev eth0route add -net 10.0.0.0/8 gw 10.0.0.200 dev eth1 #重点echo 1 > /proc/sys/net/ipv4/ip_forward#配置Bifconfig eth0 172.16.0.123/16route add -net 172.16.0.0/16 dev eth0route add default gw 172.16.0.200 dev eth0
小记:路由配置三部曲(1)分析非直连网段—net (2)下一个路由器的临近接口—gw (3)从本路由那个设备出—dev
开启路由转发功能
[root@router ~]#echo 1 > /proc/sys/net/ipv4/ip_forward#或者[root@r1 ~]# sysctl -a | grep ip_forwardsysctl: reading key "net.ipv6.conf.all.stable_secret"net.ipv4.ip_forward = 0net.ipv4.ip_forward_use_pmtu = 0sysctl: reading key "net.ipv6.conf.default.stable_secret"sysctl: reading key "net.ipv6.conf.eth0.stable_secret"sysctl: reading key "net.ipv6.conf.eth1.stable_secret"sysctl: reading key "net.ipv6.conf.lo.stable_secret"[root@r1 ~]# vim /etc/sysctl.conf #将net.ipv4.ip_forward = 1 写入[root@r1 ~]# sysctl -pnet.ipv4.ip_forward = 1[root@r1 ~]# sysctl -a | grep ip_forwardsysctl: reading key "net.ipv6.conf.all.stable_secret"sysctl: reading key "net.ipv6.conf.default.stable_secret"sysctl: reading key "net.ipv6.conf.eth0.stable_secret"sysctl: reading key "net.ipv6.conf.eth1.stable_secret"sysctl: reading key "net.ipv6.conf.lo.stable_secret"net.ipv4.ip_forward = 1net.ipv4.ip_forward_use_pmtu = 0[root@r1 ~]#

ip命令
来自于iproute包,可用于替代ifconfig
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip命令说明:
OBJECT := { link | addr | route }ip link - network device configurationset dev IFACE,可设置属性:up and down:激活或禁用指定接口,相当于 ifup/ifdownshow [dev IFACE] [up]::指定接口 ,up 仅显示处于激活状态的接口man帮助:ip(8), ip-address(8), ip-link(8), ip-route(8)
ip 地址管理
ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}][broadcast ADDRESS][label LABEL]:添加地址时指明网卡别名[scope {global|link|host}]:指明作用域,global: 全局可用.link: 仅链接可用,host: 本机可用[broadcast ADDRESS]:指明广播地址ip address showip addr flush
范例:
#禁用网卡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:0ip addr del 172.16.100.100/16 dev eth0 label eth0:0#清除网络地址ip addr flush dev eth0
修改ip
#先加新IP,再删除旧的IP[root@centos8 ~]#ip address add 10.0.0.88/24 dev eth0[root@centos8 ~]#ip address del 10.0.0.8/24 dev eth0[root@centos8 ~]#ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN groupdefault qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UPgroup default qlen 1000link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ffinet 10.0.0.88/24 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe8a:5121/64 scope linkvalid_lft forever preferred_lft forever
管理路由
ip route用法
#添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IPTARGET:主机路由: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]
范例:
ip route add 192.168.0.0/24 via 172.16.0.1ip route add 192.168.1.100 via 172.16.0.1ip route add default via 172.16.0.1ip route flush dev eth0
范例:查看路由过程
[root@centos8 ~]#ip route get 10.0.0.710.0.0.7 dev eth0 src 10.0.0.8 uid 0cache[root@centos8 ~]#ip route get 8.8.8.88.8.8.8 via 10.0.0.2 dev eth0 src 10.0.0.8 uid 0cache
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_1FIN_WAIT_2SYN_SENTSYN_RECVCLOSEDEXPRESSION:dport =sport =
常见组合
-tan, -tanl, -tanlp, -uan
常见用法:
#显示本地打开的所有端口ss -l#显示每个进程具体打开的socketss -pl#显示所有tcp socketss -t -a#显示所有的UDP Socektss -u -a#显示所有已建立的ssh连接ss -o state established '( dport = :ssh or sport = :ssh )'#显示所有已建立的HTTP连接ss -o state established '( dport = :http or sport = :http )'[root@centos8 ~]#ss -no state established '( dport = :21 or sport = :21 )'Netid Recv-Q Send-QLocal Address:Port Peer Address:Porttcp 0 0[::ffff:10.0.0.8]:21 [::ffff:10.0.0.7]:46638timer:(keepalive,119min,0)#列出当前socket详细信息ss -s
网络配置工具 nmcli
nmcli [ OPTIONS ] OBJECT { COMMAND | help }device - show and manage network interfacesnmcli device helpconnection - start, stop, and manage network connectionsnmcli connection help
修改配置文件执行生效:
nmcli con reloadnmcli con up con-name
#查看帮助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,不自动连接nmcti con add con-name static ifname eth0 autoconnect no type Ethernetipv4.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 nonmcli con mod “static” ipv4.dns 172.25.X.254nmcli con mod “static” +ipv4.dns 8.8.8.8nmcli con mod “static” -ipv4.dns 8.8.8.8nmcli 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
网络配置文件
IP、MASK、GW、DNS相关的配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
[root@a ~]# cd /etc/sysconfig/network-scripts/[root@a network-scripts]# ls ifcfg-*ifcfg-eth0 ifcfg-eth0.bak ifcfg-lo
[root@a network-scripts]# vim ifcfg-eth0[root@a network-scripts]# cat ifcfg-eth0TYPE="Ethernet"BOOTPROTO="static"IPADDR=10.0.0.123PREFIX=24GATEWAY=10.0.0.200NAME="eth0"DEVICE="eth0"ONBOOT="yes"
配置说明
| 设置 | 说明 |
|---|---|
| TYPE | 接口类型;常见有Ethernet, Bridge |
| NAME | 配置文件应用到的sheb |
| DEVICE | 设备名 |
| HWADDR | 对应的设备的MAC地址 |
| UUID | 设备的唯一标识 |
| BOOTPROTO | 激活此设备时使用的地址配置协议:常用dhcp,static,nonebootp |
| IPADDR | 指明ip地址 |
| NETMASK | 子网掩码,如255.255.255.0 |
| GATEWAY | 默认网关 |
| DNS1 | 第一个DNS服务器地址 |
| DNS2 | 第二个dns服务器地址 |
| DOMAIN | 主机不完整时,自动搜索的域名后缀 |
| ONBOOT | 在系统引导时是否激活此设备 |
| USERCTL | 普通用户是否可控制此设备 |
| PEERDNS | 如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf |
| NM_CONTROLLED | NM是NetworkManager的简写,此网卡是否接受NM控制 |
配置当前主机名
#centos6 之前版本/etc/sysconfig/networkHOSTNAME=#centos7 以后版/etc/hostnameHOSTNAME
网卡别名
将多个IP地址绑定到一个NIC上
每个IP绑定到独立逻辑网卡,即网络别名,命名格式: ethX:Y,如:eth0:1 、eth0:2、eth0:3
范例:ifconfig 命令
ifconfig eth0:0 192.168.1.100/24 upifconfig eth0:0 down
范例:ip 命令
ip addr add 172.16.1.1/16 dev eth0ip addr add 172.16.1.2/16 dev eth0 label eth0:0ip addr del 172.16.1.2/16 dev eth0 label eth0:0ip addr flush dev eth0 label eth0:0
多网卡 bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
网桥
桥接原理
桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到
eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D
Ubuntu网卡配置
ubuntu系统将root账户改成允许远程链接
修改配置文件
vim /etc/ssh/sshd_config
在配置文件下添加以下: PermitRootLogin yes
重启配置文件:
systemctl restart sshd
如果root还没有设置密码,则需要设置登录密码,才能远程链接
网卡名称—使用传统名称命名方式
#修改配置文件为下面形式root@ubuntu1804:~#vi /etc/default/grubGRUB_CMDLINE_LINUX="net.ifnames=0"#或者sed修改root@ubuntu1804:~# sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#' /etc/default/grub#生效新的grub.cfg文件root@ubuntu1804:~# grub-mkconfig -o /boot/grub/grub.cfg#或者root@ubuntu1804:~# update-grubroot@ubuntu1804:~# grep net.ifnames /boot/grub/grub.cfglinux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-8c14-fe1a48ba153c ro net.ifnames=0linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-8c14-fe1a48ba153c ro net.ifnames=0linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-8c14-fe1a48ba153c ro recovery nomodeset net.ifnames=0linux /vmlinuz-4.15.0-76-generic root=UUID=51517b88-7e2b-4d4a-8c14-fe1a48ba153c ro net.ifnames=0linux /vmlinuz-4.15.0-76-generic root=UUID=51517b88-7e2b-4d4a-8c14-fe1a48ba153c ro recovery nomodeset net.ifnames=0#重启生效root@ubuntu1804:~# reboot
配置自动获取IP
网卡配置文件采用YAML格式,必须以 /etc/netplan/XXX.yaml 文件命名方式存放可以每个网卡对应一个单独的配置文件,也可以将所有网卡都放在一个配置文件里
root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml# This file describes the network interfaces available on your system# For more information, see netplan(5).network:version: 2renderer: networkdethernets:eth0:dhcp4: yes
修改网卡配置文件后需执行命令生效:
root@ubuntu1804:~#netplan apply
配置静态IP
root@ubuntu1804:~#vim /etc/netplan/01-netcfg.yamlnetwork:version: 2renderer: networkdethernets:eth0:addresses: [192.168.8.10/24,10.0.0.10/8] #或者用下面两行,两种格式不能混用- 192.168.8.10/24- 10.0.0.10/8gateway4: 10.0.0.2nameservers:search: [magedu.com, magedu.org]addresses: [180.76.76.76, 8.8.8.8, 1.1.1.1]
