6. Linux中网络管理

213 阅读2分钟

本系列都是是基于RedHat体系的,所以CentOS也可以用,但是Debian系列的可能会有些命令上的出入。

1. 网络接口

接口名称是软件,而网卡才是硬件。

1.1 网络接口名称规则

以前CentOS (6及之前) 网络接口被枚举为eth0,eth1,eth2...等,ethernet的简写,服务器为了备份,以防止单点网络故障,支持多个网卡。现在(CentOS 7+)为了区分不同网络,包含了新的名称:

  • 开头:en是以太网接口,wl是WLAN接口,ww是WWAN接口;
  • 下一个字符表示适配器的类型:o表示板载,s表示支持热插拔,p表示PCI地理位置;
  • x用于合并MAC地址,默认不使用;
  • 数字:表示索引、ID或端口

如果无法确定固定名称,将使用传统名称,例如ethN。

网络配置位置:CentOS 7:/etc/sysconfig/network-scripts/ifcfg-ens32,Ubuntu:/etc/network/interfaces

1.2 NetworkManager服务

安装:yum install NetworkManager

CentOS 7中,NetworkManager是网络的主程序,而network是子程序,查看他们的状态:

$ systemctl status NetworkManager
$ systemctl status network

1.3 配置网络的工具

  • GUI

    • nmtui:其实也是命令行
    • nm-connection-editor: network manager connection editor
  • 命令行

    • nmcli:很少用,太复杂

    • VIM: CentOS:vim /etc/sysconfig/network-scripts/ifcfg-ens32

      basil@basil-2020:/etc $ nmcli device
      DEVICE    TYPE      STATE        CONNECTION
      wlp3s0b1  wifi      connected    gnocuil-402-2.4G
      docker0   bridge    connected    docker0
      enp4s0    ethernet  unavailable  --
      lo        loopback  unmanaged    --
      

2. 配置网络参数

2.1 配置IP

vim /etc/sysconfig/network-scripts/ifcfg-ens32,修改后刷新网络即可启用新的配置文件systemctl restart network

  • ONBOOT=yes:启动,no则是不启动;

  • BOOTPROTO=none:分三种,none是手动,dhcp是自动,static是静态即手动;

  • IPADDR=192.168.7.40:IPv4地址;

  • NETMASK=255.255.0.0:子网掩码;

  • GATEWAY=10.18.43.1:网关,默认路由;

  • DNS1=8.8.8.8:DNS配置,可有多个;

  • DNS2=114.114.114.114:DNS配置,可有多个;

查看网卡信息:

root@localhost:/etc# 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: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 3c:97:0e:fc:c0:d3 brd ff:ff:ff:ff:ff:ff
3: wlp3s0b1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 1c:3e:84:65:c1:bf brd ff:ff:ff:ff:ff:ff
    inet 192.168.7.40/16 brd 192.168.255.255 scope global dynamic noprefixroute wlp3s0b1
       valid_lft 31843sec preferred_lft 31843sec
    inet6 fd91:5e86:1e26::fba/128 scope global dynamic noprefixroute
       valid_lft 31995sec preferred_lft 31995sec
    inet6 fd91:5e86:1e26:0:fc2c:8f8c:44af:32b/64 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::2db8:494:d228:6b72/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:ae:3e:33:24 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
# Ubuntu主机配置
# 配置IP地址
$ sudo ifconfig eth1 inet add 192.168.142.4/24
$ sudo ifconfig eth1 inet6 add 2001::da6/64			# 需要前缀

# 配置默认网关
$ sudo route add default gw 192.168.1.254

2.2 配置主机名

主机名是为了区分计算机,可以通过设置计算机的黑白名单来确定是否可以访问某些服务。

# 1. 查看主机名
$ hostname
root@basil-2020:/etc# hostname
basil-2020

# 2. 配置主机名
# 临时修改
$ hostname localhost
# 下面永久修改,重启生效
$ hostnamectl set-hostname basil.com						# 命令方式修改
root@basil-2020:/etc# hostnamectl set-hostname localhost
$ vi /etc/hostname											# 配置文件修改
root@basil-2020:/etc# cat /etc/hostname
localhost

2.3 网络测试工具

# 查看所有IP(ifconfig)
$ ip a 
# 查看路由,查看网关
$ ip route
root@localhost:~# ip route
default via 192.168.0.254 dev wlp3s0b1 proto dhcp metric 600
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.0.0/16 dev wlp3s0b1 proto kernel scope link src 192.168.7.40 metric 600

# 查看邻居,可以 ping 下
$ ip neigh
root@localhost:~# ip neigh
192.168.0.214 dev wlp3s0b1 lladdr fc:3f:db:c0:aa:c4 STALE
192.168.0.180 dev wlp3s0b1 lladdr 30:e1:71:3e:b0:59 STALE
192.168.0.196 dev wlp3s0b1 lladdr 50:65:f3:5d:6d:44 STALE
192.168.0.254 dev wlp3s0b1 lladdr 00:e0:4c:68:10:9a STALE
192.168.4.193 dev wlp3s0b1 lladdr 66:6e:ed:f9:e6:39 DELAY
fe80::2ac6:8eff:fe18:534f dev wlp3s0b1 lladdr 28:c6:8e:18:53:4f router STALE
fe80::2e0:4cff:fe68:109a dev wlp3s0b1 lladdr 00:e0:4c:68:10:9a router STALE

# ping
$ ping 127.0.0.1 				# 测试自己
$ ping www.baidu.com			# 测试网络

端口和服务一一对应,端口号有65535个,0-1023是系统的,1024-49151是用户端口,49152-65535是动态端口号。常用端口

# ss: 网络连接状态程序
# t:tcp
# n:数字
# l:list,列出
$ ss -tnl
root@localhost:~# ss -tnl
State               Recv-Q              Send-Q                   Local Address:Port                           Peer Address:Port                     Process
LISTEN              0                   511                                  *:80                                        *:*


$ netstat 

3. 防火墙

3.1 firewall

保护互联网对服务器的影响。

CentOS:

  1. 永久开启:systemctl enable firewalld
  2. 临时开启:systemctl start firewalld
  3. 状态查看:systemctl status firewalld
  4. 临时关闭:systemctl stop firewalld
  5. 永久关闭:systemctl disable firewalld,不设置防火墙开机自启。

3.2 SELinux

保护服务器内部程序对内部文件的访问。

CentOS:

  1. 开启:vim /etc/selinux/configSELINUX=enforcing,重启生效
  2. 状态查看:getenforce,Permissive放行(0),Disabled关闭,Enforcing开启
  3. 临时关闭:setenforce 0
  4. 永久关闭:vim /etc/selinux/config或者vim /etc/sysconfig/selinuxSELINUX=disabled,重启生效

4. SSH

Secure Shell,远程连接,默认端口是22。

数据加密、压缩传输。保证安全、提高传输速度。

$ ssh [-p port] <username>@<remote>

5. SCP

Secure Copy,安全远程拷贝。

# -r:拷贝目录
# scp src dst
# 从远程复制
$ scp [-P port] <username>@<remote>:/path/to/file /path/local/file

# 复制到远程
$ scp [-P port] /path/local/file <username>@<remote>:/path/to/file

免密码登录:远端生成密码保存到本机

# .ssh
# 	|- known-hosts
$ ssh-keygen		# 在remote生成公钥和私钥
$ ls
id_rsa  id_rsa.pub  known_hosts 
# 将id_rsa.pub下载到到local
$ ssh-copy-id username@remote	# 拷贝到了local的~/.ssh下面的authenrized_hosts

配置别名:在本机~/.ssh/config配置

Host alias-name
	HostName ip-address
	User username
	Port 22