博客停了好多天没更新了,十一调休把课都调乱了,又加上高数上的书过了一遍,在忙着做总结,要学的太多了……

前两天买了阿里云的服务器玩,昨天把基本的环境配好了,过段时间会尝试打打自己,学学 linux 的提权。所以 linux 还是要学啊…….

linux 网络配置

网络参数的获取

在 TCP/IP 网络上,每台工作站要存取网络上的资源之前,都必须进行基本的网络配置,一些主要的参数如 IP 地址、子网掩码、默认网关、DNS 等都必不可少。

配置这些参数主要有两种方法:静态手工配置和从 DHCP 服务动态获得。

动态获得网络参数依赖于 BOOTP/DHCP 协议,以及支持这种协议的 C/S 机制。

网络接口设备

RHEL/CentOS 默认采用内核模块的方式在系统引导时驱动网络接口,也可以把相应的网卡驱动编译进内核,可以在 /lib/modules/$(uname -r)/kernel/drivers/net 目录下找到可以转入的驱动。

linux 下常见的网络接口

接口类型 接口名称 说明
以太网接口 ethX 是最常见的网络接口
无线网接口 wlanX 无线局域网接口
光纤分布式数据接口 fddiX FDDI 接口设备昂贵,通常用于核心网络
点对点协议接口 PPPX 用于 Modem/ADSL 拨号网络或基于 PPTP 协议的 VPN 等
本地回环接口 lo 用于支持 UNIX Domain Socket 技术的进程互相通信

一致的网络设备命名

一致的网络设备名以双字节前缀开始

  • en:表示以太网设备
  • wl:表示无线局域网设备
  • ww:表示无线广域网设备

随后的第 3 个字符用于区分不同的硬件类型

  • o:表示主板板载设备
  • s:表示热插拔插槽上的设备
  • p:表示 PCI 总线或 USB 接口上的设备

从 RHEL/CentOS 7 开始,动态设备管理器 udev 支持对网络设备的多种命名方案。

  • 一致的网络设备名,默认,由 systemd-udev 重命名
  • 基于 biosdevname 设置网络设备名,通常用于 Dell 服务器
  • 通过 MAC 地址识别网络设备名
  • 传统的内核识别的网络设备名

无论哪种方法,执行后都需要重启系统。

CentOS 下的网络配置方法

临时性网络配置:

使用 ip 命名配置,立即生效,但重启系统后失效。

持久性网络配置:

使用 nmtui/nmcli 配置工具修改网络配置文件,使用文本编辑器直接修改网络配置文件。

重启后仍然生效,若希望立即生效,需要重新加载配置文件并重启网络连接。

使用 ip 命令更改 ip 网络地址

格式如下:ip addr [add|del] <CIDR 形式的ip地址> dev<网络设备接口>

使用 ip 命令设置静态路由

格式:ip route [add|del] default|<主机地址>|<网络地址>via<网关地址>[dev<留出设备接口>]

手工修改网络配置

CentOS 中的 TCP/IP 配置文件

配置文件名 功能
/etc/sysconfig/network-scripts/ifcfg-* 网络接口配置文件
/etc/sysconfig/network-scripts/route-* 网络接口路由配置文件
/etc/hostname 本地主机名配置文件
/etc/hosts 完成主机名映射为 ip 的解析功能
/etc/networks 完成域名与网络地址的映射
/etc/host.conf 配置域名服务客户端的控制文件
/etc/resolv.conf 配置域名服务客户端的配置文件,用于指定域名服务器的位置

查看 /etc/protocols 文件可获知 Linux 支持的协议以及各个协议的协议号。

查看 /etc/servives 文件可获知 Linux 支持的网络服务及其端口号。

网络接口配置文件

所有的接口配置文件均存放在 /etc/sysconfig/network-scripts 目录下。网络接口配置文件的内容及其常用参数如下:

静态配置 说明
Type=Ethernet 指定网络接口设备
DEVICE=eno16777736 指定设备名
UUID=8efea5fc-390e-4572-87fb-22621e6cb3a6 指定设备的 UUID
ONBOOT=yes 指定是否在启动时启动设备
DEFROUTE=yes 指定是否基于此接口设置默认路由
IPV4_FAILURE_FATAL=yes 同时配置了 IPV4和IPV6,若IPv4 配置失败,则禁用该设备,即时 IPv6 正确。
IPV6INIT=no 是否为此接口启用 IPv6
USERCTL=no 是否允许非 root 用户控制该设备
BOOTPROTR=static 或 none 指定获取网络参数的方式
IPADDR=192.168.0.123 指定静态 ip 地址
PREFIX=24 设置 CIDR 网络前缀
BROADCAST=192.168.0.255 设置网络广播地址
GATEWAY=192.168.0.1 指定设备的网关
DNS1=8.8.8.8 指定首选 DNS
DNS2=8.8.4.4 指定次选 DNS

网络接口的静态路由配置

在 /etc/sysconfig/network-scripts 目录下,每个网络接口均有其静态路由配置文件。

本地域名解析配置文件

在本地域名解析数据库文件为 /etc/hosts ,通常也称为 Host 表文件。

配置远程域名解析器

若网络接口配置文件中的 PEERDNS 指令设置为 no ,则不会自动设置远程域名解析器,为了手工设置 Linux 的远程域名解析器,可以编辑 /etc/resolv.conf 文件。

  • 关键字 nameserver 用于指定 DNS 服务器,最多指定3个 DNS 服务器,行的顺序决定了 DNS 查询顺序。
  • 关键字 domain 用于指定当前主机所在域的域名
  • 关键字 search 用于指定默认的搜索域

配置域名解析顺序

域名解析的优先顺序,由配置文件/etc/host.conf 决定。

设置包转发

查看当前系统是否支持包转发:sysctl net.ipv4.ip_forward

永久性配置包转发,需要修改配置文件/etc/sysctl.conf 确保如下配置行存在。

net.ipv4.ip_forward = 1

设置主机名

在 CentOS 7 中主机名是由 Systemd 管理的,名为 systemd-hostname.service 的静态服务在开机后启动。使用 hostnamectl 命令可以修改主机名,主机名被写在配置文件 /etc/hostname 中,systemd-hostnamed.service 服务会自动感知主机名的改变。