基本网络配置

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

主DNS服务器
次DNS服务器
第三个DNS服务器

ifconfig命令

  1. #设置网卡
  2. [root@centos8 ~]#ifconfig ens37 10.0.0.110 netmask 255.255.255.0
  3. #设置多个
  4. [root@centos8 ~]#ifconfig ens37:1 10.0.0.120/24
  5. [root@centos8 ~]#ifconfig
  6. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  7. inet 10.0.0.100 netmask 255.255.255.0 broadcast 10.0.0.255
  8. inet6 fe80::7d57:ca2b:75ea:b18c prefixlen 64 scopeid 0x20<link>
  9. ether 00:0c:29:9f:5f:fe txqueuelen 1000 (Ethernet)
  10. RX packets 867 bytes 86730 (84.6 KiB)
  11. RX errors 0 dropped 0 overruns 0 frame 0
  12. TX packets 286 bytes 38872 (37.9 KiB)
  13. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  14. ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  15. inet 10.0.0.110 netmask 255.255.255.0 broadcast 10.0.0.255
  16. ether 00:0c:29:9f:5f:08 txqueuelen 1000 (Ethernet)
  17. RX packets 452 bytes 34365 (33.5 KiB)
  18. RX errors 0 dropped 0 overruns 0 frame 0
  19. TX packets 87 bytes 11110 (10.8 KiB)
  20. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  21. ens37:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  22. inet 10.0.0.120 netmask 255.255.255.0 broadcast 10.0.0.255
  23. ether 00:0c:29:9f:5f:08 txqueuelen 1000 (Ethernet)
  24. [root@centos8 ~]#ifconfig -s
  25. Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
  26. ens33 1500 870 0 0 0 286 0 0 0 BMRU
  27. ens37 1500 503 0 0 0 117 0 0 0 BMRU
  28. ens37:1 1500 - no statistics available - BMRU
  29. lo 65536 62 0 0 0 62 0 0 0 LRU
  30. virbr0 1500 0 0 0 0 0 0 0 0 BMU

route命令

路由表管理命令

  1. route
  2. route -n
  3. [root@centos8 ~]#route
  4. Kernel IP routing table
  5. Destination Gateway Genmask Flags Metric Ref Use Iface
  6. default _gateway 0.0.0.0 UG 100 0 0 ens33
  7. 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens37
  8. 10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
  9. 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
  10. [root@centos8 ~]#route -n
  11. Kernel IP routing table
  12. Destination Gateway Genmask Flags Metric Ref Use Iface
  13. 0.0.0.0 10.0.0.2 0.0.0.0 UG 100 0 0 ens33
  14. 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ens37
  15. 10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
  16. 192.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

  1. route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]

删除:route del

  1. route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]

范例:

  1. #目标:192.168.1.3 网关:172.16.0.1
  2. route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
  3. #目标:192.168.0.0 网关:172.16.0.1
  4. route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
  5. route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
  6. route add -net 192.168.8.0/24 dev eth1 metric 200
  7. #默认路由,网关:172.16.0.1
  8. route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
  9. route add -net 0.0.0.0/0 gw 172.16.0.1
  10. route add default gw 172.16.0.1
  11. #目标:192.168.1.3 网关:172.16.0.1
  12. route del -host 192.168.1.3
  13. #目标:192.168.0.0 网关:172.16.0.1
  14. route del -net 192.168.0.0 netmask 255.255.255.0

范例:实现静态路由

环境:

  1. 四台主机:
  2. A主机:eth0 NAT模式
  3. R1主机:eth0 NAT模式,eth1 仅主机模式
  4. R2主机:eth0 桥接模式,eth1 仅主机模式
  5. B主机:eth0 桥接模式

image.png

  1. #配置A主机
  2. ifconfig eth0 10.0.0.123/8
  3. route add -net 10.0.0.0/8 dev eth0
  4. route add default gw 10.0.0.200 dev eth0
  5. #配置R1
  6. ifconfig eth0 10.0.0.200/8
  7. ifconfig eth1 192.168.0.200/24
  8. route add -net 10.0.0.0/8 dev eth0
  9. route add -net 192.168.0.0/24 dev eth1
  10. route add -net 172.16.0.0/16 gw 192.168.0.201 dev eth1 #重点
  11. echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发功能
  12. #配置R2
  13. ifconfig eth0 172.16.0.200/16
  14. ifconfig eth1 192.168.0.201/24
  15. route add -net 192.168.0.0/24 dev eth1
  16. route add -net 172.16.0.0/16 dev eth0
  17. route add -net 10.0.0.0/8 gw 10.0.0.200 dev eth1 #重点
  18. echo 1 > /proc/sys/net/ipv4/ip_forward
  19. #配置B
  20. ifconfig eth0 172.16.0.123/16
  21. route add -net 172.16.0.0/16 dev eth0
  22. route add default gw 172.16.0.200 dev eth0

小记:路由配置三部曲(1)分析非直连网段—net (2)下一个路由器的临近接口—gw (3)从本路由那个设备出—dev

开启路由转发功能

  1. [root@router ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
  2. #或者
  3. [root@r1 ~]# sysctl -a | grep ip_forward
  4. sysctl: reading key "net.ipv6.conf.all.stable_secret"
  5. net.ipv4.ip_forward = 0
  6. net.ipv4.ip_forward_use_pmtu = 0
  7. sysctl: reading key "net.ipv6.conf.default.stable_secret"
  8. sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
  9. sysctl: reading key "net.ipv6.conf.eth1.stable_secret"
  10. sysctl: reading key "net.ipv6.conf.lo.stable_secret"
  11. [root@r1 ~]# vim /etc/sysctl.conf #将net.ipv4.ip_forward = 1 写入
  12. [root@r1 ~]# sysctl -p
  13. net.ipv4.ip_forward = 1
  14. [root@r1 ~]# sysctl -a | grep ip_forward
  15. sysctl: reading key "net.ipv6.conf.all.stable_secret"
  16. sysctl: reading key "net.ipv6.conf.default.stable_secret"
  17. sysctl: reading key "net.ipv6.conf.eth0.stable_secret"
  18. sysctl: reading key "net.ipv6.conf.eth1.stable_secret"
  19. sysctl: reading key "net.ipv6.conf.lo.stable_secret"
  20. net.ipv4.ip_forward = 1
  21. net.ipv4.ip_forward_use_pmtu = 0
  22. [root@r1 ~]#

image.png

ip命令

来自于iproute包,可用于替代ifconfig

  1. ip [ OPTIONS ] OBJECT { COMMAND | help }

ip命令说明:

  1. OBJECT := { link | addr | route }
  2. ip link - network device configuration
  3. set dev IFACE,可设置属性:up and down:激活或禁用指定接口,相当于 ifup/ifdown
  4. show [dev IFACE] [up]::指定接口 up 仅显示处于激活状态的接口
  5. man帮助:ip(8), ip-address(8), ip-link(8), ip-route(8)

ip 地址管理

  1. ip addr { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}][broadcast ADDRESS]
  2. [label LABEL]:添加地址时指明网卡别名
  3. [scope {global|link|host}]:指明作用域,global: 全局可用.link: 仅链接可用,host: 本机可
  4. [broadcast ADDRESS]:指明广播地址
  5. ip address show
  6. ip addr flush

范例:

  1. #禁用网卡
  2. ip link set eth1 down
  3. #网卡改名
  4. ip link set eth1 name wangnet
  5. #启用网卡
  6. ip link set wangnet up
  7. #网卡别名
  8. ip addr add 172.16.100.100/16 dev eth0 label eth0:0
  9. ip addr del 172.16.100.100/16 dev eth0 label eth0:0
  10. #清除网络地址
  11. ip addr flush dev eth0

修改ip

  1. #先加新IP,再删除旧的IP
  2. [root@centos8 ~]#ip address add 10.0.0.88/24 dev eth0
  3. [root@centos8 ~]#ip address del 10.0.0.8/24 dev eth0
  4. [root@centos8 ~]#ip a
  5. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group
  6. default qlen 1000
  7. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  8. inet 127.0.0.1/8 scope host lo
  9. valid_lft forever preferred_lft forever
  10. inet6 ::1/128 scope host
  11. valid_lft forever preferred_lft forever
  12. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
  13. group default qlen 1000
  14. link/ether 00:0c:29:8a:51:21 brd ff:ff:ff:ff:ff:ff
  15. inet 10.0.0.88/24 scope global eth0
  16. valid_lft forever preferred_lft forever
  17. inet6 fe80::20c:29ff:fe8a:5121/64 scope link
  18. valid_lft forever preferred_lft forever


管理路由

ip route用法

  1. #添加路由:
  2. ip route add TARGET via GW dev IFACE src SOURCE_IP
  3. TARGET:
  4. 主机路由:IP
  5. 网络路由:NETWORK/MASK
  6. #添加网关:
  7. ip route add default via GW dev IFACE
  8. #删除路由:
  9. ip route del TARGET
  10. #显示路由:
  11. ip route show|list
  12. #清空路由表:
  13. ip route flush [dev IFACE] [via PREFIX]

范例:

  1. ip route add 192.168.0.0/24 via 172.16.0.1
  2. ip route add 192.168.1.100 via 172.16.0.1
  3. ip route add default via 172.16.0.1
  4. ip route flush dev eth0

范例:查看路由过程

  1. [root@centos8 ~]#ip route get 10.0.0.7
  2. 10.0.0.7 dev eth0 src 10.0.0.8 uid 0
  3. cache
  4. [root@centos8 ~]#ip route get 8.8.8.8
  5. 8.8.8.8 via 10.0.0.2 dev eth0 src 10.0.0.8 uid 0
  6. cache


ss命令

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

  1. ss [OPTION]... [FILTER]

选项:

  1. -t: tcp协议相关
  2. -u: udp协议相关
  3. -w: 裸套接字相关
  4. -xunix sock相关
  5. -l: listen状态的连接
  6. -a: 所有
  7. -n: 数字格式
  8. -p: 相关的程序及PID
  9. -e: 扩展的信息
  10. -m:内存用量
  11. -o:计时器信息

格式说明

  1. FILTER : [ state TCP-STATE ] [ EXPRESSION ]
  2. TCP的常见状态:
  3. tcp finite state machine:
  4. LISTEN: 监听
  5. ESTABLISHED:已建立的连接
  6. FIN_WAIT_1
  7. FIN_WAIT_2
  8. SYN_SENT
  9. SYN_RECV
  10. CLOSED
  11. EXPRESSION:
  12. dport =
  13. sport =

常见组合

  1. -tan, -tanl, -tanlp, -uan

常见用法:

  1. #显示本地打开的所有端口
  2. ss -l
  3. #显示每个进程具体打开的socket
  4. ss -pl
  5. #显示所有tcp socket
  6. ss -t -a
  7. #显示所有的UDP Socekt
  8. ss -u -a
  9. #显示所有已建立的ssh连接
  10. ss -o state established '( dport = :ssh or sport = :ssh )'
  11. #显示所有已建立的HTTP连接
  12. ss -o state established '( dport = :http or sport = :http )'
  13. [root@centos8 ~]#ss -no state established '( dport = :21 or sport = :21 )'
  14. Netid Recv-Q Send-Q
  15. Local Address:Port Peer Address:Port
  16. tcp 0 0
  17. [::ffff:10.0.0.8]:21 [::ffff:10.0.0.7]:46638
  18. timer:(keepalive,119min,0)
  19. #列出当前socket详细信息
  20. ss -s


网络配置工具 nmcli

  1. nmcli [ OPTIONS ] OBJECT { COMMAND | help }
  2. device - show and manage network interfaces
  3. nmcli device help
  4. connection - start, stop, and manage network connections
  5. nmcli connection help

修改配置文件执行生效:

  1. nmcli con reload
  2. nmcli con up con-name
  1. #查看帮助
  2. nmcli con add help
  3. #使用nmcli配置网络
  4. nmcli con show
  5. #显示所有活动连接
  6. nmcli con show --active
  7. #显示网络连接配置
  8. nmcli con show "System eth0"
  9. #显示设备状态
  10. nmcli dev status
  11. #显示网络接口属性
  12. nmcli dev show eth0
  13. #创建新连接default,IP自动通过dhcp获取
  14. nmcli con add con-name default type Ethernet ifname eth0
  15. #删除连接
  16. nmcli con del default
  17. #创建新连接static ,指定静态IP,不自动连接
  18. nmcti con add con-name static ifname eth0 autoconnect no type Ethernet
  19. ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
  20. #启用static连接配置
  21. nmcli con up static
  22. #启用default连接配置
  23. nmcli con up default
  24. #修改连接设置
  25. nmcli con mod static connection.autoconnect no
  26. nmcli con mod static ipv4.dns 172.25.X.254
  27. nmcli con mod static +ipv4.dns 8.8.8.8
  28. nmcli con mod static -ipv4.dns 8.8.8.8
  29. nmcli con mod static ipv4.addresses 172.16.X.10/24 172.16.X.254
  30. nmcli con mod static +ipv4.addresses 10.10.10.10/16
  31. #DNS设置存放在/etc/resolv.conf,PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,
  32. 不自动获取等价于下面命令
  33. nmcli con mod system eth0 ipv4.ignore-auto-dns yes

网络配置文件

IP、MASK、GW、DNS相关的配置文件:

  1. /etc/sysconfig/network-scripts/ifcfg-IFACE


  1. [root@a ~]# cd /etc/sysconfig/network-scripts/
  2. [root@a network-scripts]# ls ifcfg-*
  3. ifcfg-eth0 ifcfg-eth0.bak ifcfg-lo
  1. [root@a network-scripts]# vim ifcfg-eth0
  2. [root@a network-scripts]# cat ifcfg-eth0
  3. TYPE="Ethernet"
  4. BOOTPROTO="static"
  5. IPADDR=10.0.0.123
  6. PREFIX=24
  7. GATEWAY=10.0.0.200
  8. NAME="eth0"
  9. DEVICE="eth0"
  10. 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控制

配置当前主机名

  1. #centos6 之前版本
  2. /etc/sysconfig/network
  3. HOSTNAME=
  4. #centos7 以后版
  5. /etc/hostname
  6. HOSTNAME

网卡别名

将多个IP地址绑定到一个NIC上
每个IP绑定到独立逻辑网卡,即网络别名,命名格式: ethX:Y,如:eth0:1 、eth0:2、eth0:3
范例:ifconfig 命令

  1. ifconfig eth0:0 192.168.1.100/24 up
  2. ifconfig eth0:0 down

范例:ip 命令

  1. ip addr add 172.16.1.1/16 dev eth0
  2. ip addr add 172.16.1.2/16 dev eth0 label eth0:0
  3. ip addr del 172.16.1.2/16 dev eth0 label eth0:0
  4. ip addr flush dev eth0 label eth0:0


多网卡 bonding

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

网桥

桥接原理

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
image.png
主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到
eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D

Ubuntu网卡配置

**

ubuntu系统将root账户改成允许远程链接

修改配置文件

  1. vim /etc/ssh/sshd_config

在配置文件下添加以下: PermitRootLogin yes
image.png
重启配置文件:

  1. systemctl restart sshd

如果root还没有设置密码,则需要设置登录密码,才能远程链接

网卡名称—使用传统名称命名方式

  1. #修改配置文件为下面形式
  2. root@ubuntu1804:~#vi /etc/default/grub
  3. GRUB_CMDLINE_LINUX="net.ifnames=0"
  4. #或者sed修改
  5. root@ubuntu1804:~# sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#' /etc/default/grub
  6. #生效新的grub.cfg文件
  7. root@ubuntu1804:~# grub-mkconfig -o /boot/grub/grub.cfg
  8. #或者
  9. root@ubuntu1804:~# update-grub
  10. root@ubuntu1804:~# grep net.ifnames /boot/grub/grub.cfg
  11. linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-8c14-
  12. fe1a48ba153c ro net.ifnames=0
  13. linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-
  14. 8c14-fe1a48ba153c ro net.ifnames=0
  15. linux /vmlinuz-4.15.0-96-generic root=UUID=51517b88-7e2b-4d4a-
  16. 8c14-fe1a48ba153c ro recovery nomodeset net.ifnames=0
  17. linux /vmlinuz-4.15.0-76-generic root=UUID=51517b88-7e2b-4d4a-
  18. 8c14-fe1a48ba153c ro net.ifnames=0
  19. linux /vmlinuz-4.15.0-76-generic root=UUID=51517b88-7e2b-4d4a-
  20. 8c14-fe1a48ba153c ro recovery nomodeset net.ifnames=0
  21. #重启生效
  22. root@ubuntu1804:~# reboot

配置自动获取IP

网卡配置文件采用YAML格式,必须以 /etc/netplan/XXX.yaml 文件命名方式存放可以每个网卡对应一个单独的配置文件,也可以将所有网卡都放在一个配置文件里

  1. root@ubuntu1804:~# cat /etc/netplan/01-netcfg.yaml
  2. # This file describes the network interfaces available on your system
  3. # For more information, see netplan(5).
  4. network:
  5. version: 2
  6. renderer: networkd
  7. ethernets:
  8. eth0:
  9. dhcp4: yes

修改网卡配置文件后需执行命令生效:

  1. root@ubuntu1804:~#netplan apply

配置静态IP

  1. root@ubuntu1804:~#vim /etc/netplan/01-netcfg.yaml
  2. network:
  3. version: 2
  4. renderer: networkd
  5. ethernets:
  6. eth0:
  7. addresses: [192.168.8.10/24,10.0.0.10/8] #或者用下面两行,两种格式不能混用
  8. - 192.168.8.10/24
  9. - 10.0.0.10/8
  10. gateway4: 10.0.0.2
  11. nameservers:
  12. search: [magedu.com, magedu.org]
  13. addresses: [180.76.76.76, 8.8.8.8, 1.1.1.1]