6. Linux网络管理

时间:2023-02-10 15:03:48

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/config​​,​​SELINUX=enforcing​​,重启生效
  2. 状态查看:​​getenforce​​,Permissive放行(0),Disabled关闭,Enforcing开启
  3. 临时关闭:​​setenforce 0​​,
  4. 永久关闭:​​vim /etc/selinux/config​​或者​​vim /etc/sysconfig/selinux​​,​​SELINUX=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