博客停了好多天没更新了,十一调休把课都调乱了,又加上高数上的书过了一遍,在忙着做总结,要学的太多了……
前两天买了阿里云的服务器玩,昨天把基本的环境配好了,过段时间会尝试打打自己,学学 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 服务会自动感知主机名的改变。