Linux 网络配置文件及位置
Debian 网络配置文件 /etc/network/interfaces
配置样例:ipv4 静态地址,ipv6 slaac 并指定路由
vim /etc/network/interfaces- ipv4 根据自身情况自行修改
- ipv6 gateway 根据自身实际 ipv6 路由进行修改
systemctl restart networking- 重启网络
Ubuntu 网络配置文件 /etc/netplan/*.yaml
- 创建 netplan 配置文件
sudo vim /etc/netplan/99_config.yaml
- 应用 netplan 配置文件
sudo netplan apply
样例 99_config.yaml
配置静态 IP 地址
启用 DHCP 动态分配
配置 DNS 名称解析器
- search 配置DNS搜索域,当查找不完整的主机名时尝试在DNS搜索域中查找主机名
- addresses 配置DNS服务器的IP地址
配置直连路由
- 通过使用 "on-link" 关键字可以设置默认路由或任何路由,其中网关是一个直接连接到网络的IP地址,即使该地址与在接口上配置的子网不匹配也可以使用
IPv4
IPv6
配置路由寻址(source routing)
- 任一网络上的客户端能够连接到另一个网络,并允许来自正确接口的响应
- ens3位于192.168.3.0/24网络,ens5位于192.168.5.0/24网络
- 默认路由仍然分配给ens5,允许任何其他流量通过它
连接至 AP
连接至 AP(禁用 DHCP)
RHEL 网络配置文件/etc/sysconfig/network-scripts/ifcfg-<device_name>
- 设备标识符
device_name可以通过ifconfig指令查看
- DNS配置文件
/etc/resolv.conf
- 主机名
/etc/hostname
- hosts文件
/etc/hosts
Linux 网络管理
ip 通用网络管理
ip link 网络连接管理
ip link set [dev ]<device> name <NEWNAME>设置设备名称
ip link set [dev ]<device> {up | down}启用/挂起连接
ip address协议地址管理
ip neighbour邻居/ARP表管理
ip route路由表管理- 添加默认网关
ip route add default via <ip>ip route add default via <ip>- ip route add
ip rule路由策略数据库管理
netplan 通用网络配置管理
- netplan 可以搭配不同后端(例如 systemd-networkd 或 NetworkManager)使用
- 配置文件位置及格式
- https://netplan.readthedocs.io/en/stable/netplan-yaml/
- yaml 格式配置文件,默认在
/etc/netplan
sudo netplan get [key] 显示当前网络规划配置
[key]为设备标识符(如[network.]ethernets.eth0);默认为all
sudo netplan status [interface] [--all]显示当前网络配置
更改网络配置
sudo netplan set [key=value]命令行更改网络配置
- 编辑 YAML 配置文件
sudo netplan apply应用网络配置
sudo netplan try 尝试应用网络配置,未确认则自动回滚
可选参数
[--config-fileCONFIG_FILE]
[--timeoutTIMEOUT]
systemd-networkd 网络管理
参考资料
networkctl status查看systemd-networkd状态
networkctl list查看现有连接及其状态
networkctl lldp查看和管理 LLDP(Link Layer Discovery Protocol)信息
sudo networkctl {up | down} <device>启用/挂起设备
sudo networkctl {renew | forcerenew} <device>刷新动态配置- 如从 DHCP 服务器动态获取的 IP
sudo networkctl reconfigure <device>重新配置设备- 配置后需要
sudo networkctl reload重新加载配置
NetworkManager 命令行终端 nmcli 管理网络
systemctl status NetworkManager
- RHEL 8 之后默认使用 Network Manager 管理网络
Ubuntu 安装 Network Manager
apt install network-manager
- 除此之外,可以通过
nmtui文本终端进行管理
直接修改配置文件之后重新加载也可以
ls /etc/NetworkManager/system-connections/
vim /etc/NetworkManager/system-connections/<conn-id>.nmconnection
nmcli con reload id <conn-id>
可用 connection type
6lowpan
802-11-olpc-mesh(aliasolpc-mesh)
802-11-wireless(aliaswifi)
802-3-ethernet(aliasethernet)
adsl
bluetooth
bond
bond-slave(deprecated for ethernet with controller)
bridge
bridge-slave(deprecated for ethernet with controller)
cdma
dummy
generic
gsm
hsr
infiniband
ip-tunnel
ipvlan
loopback
macsec
macvlan
olpc-mesh
ovs-bridge
ovs-interface
ovs-port
pppoe
team
team-slave(deprecated for ethernet with controller)
tun
veth
vlan
vpn
vrf
vxlan
wifi-p2p
wimax
wireguard
wpan
nmcli general 显示 NetworkManager 的状态和权限等
nmcli general { status | hostname | permissions | logging | reload } [ ARGUMENTS ...]
nmcli general [status]显示 NetworkManager 当前状态
nmcli general permissions显示当前用户的 NetworkManager 操作权限
nmcli general reload [ conf | dns-rc | dns-full ]重新加载 NetworkManager 配置
nmcli networking 管理网络
nmcli networking { on | off | connectivity } [ ARGUMENTS ...]
nmcli networking connectivity [check]获取网络连接状态check可选,指示 NetworkManager 重新检查连接性
nmcli networking [ on | off ]开启或关闭 NetworkManager- 关闭后 NetworkManager 管理的接口均会停用
nmcli monitor监控网络变更- 监听特定连接可以用
nmcli con monitor [ id | uuid | path ] <ID>
nmcli con 管理连接
nmcli connection { show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export | migrate } [ARGUMENTS...]
nmcli connection show列出内存和磁盘上的连接配置文件--active选项仅显示活动配置文件
nmcli connection { up | down } [ id | uuid | path ] <ID>启用或停用特定连接- id 默认是 connection name
nmcli connection add [save { yes | no }] \
{ option value | [+|-]setting.property value } 添加连接
- 添加 ipv4 连接
nmcli con add con-name dhcp type ethernet ifname ens33 ipv4.method auto- dhcp
nmcli con up dhcpnmcli c a con-name static ifname ens33 autoconnect no type ethernet ip4 10.0.0.10/24 gw4 10.0.0.1 ipv4.method- 静态连接
nmcli con up static
- 添加 ipv4/v6 双栈连接
nmcli c a ifname interface_name type ethernet ipv4.method auto ipv6.method auto
nmcli connection edit [ id | uuid | path ] <ID>交互式编辑
nmcli connection modify [ id | uuid | path ] <ID> 修改连接配置
- 修改之后需要重新 up 或 reload 以适用配置
- 不提供 ID 的话则修改默认配置
修改 static 的自动连接
nmcli con mod static connection.autoconnect no
添加 static 连接的 DNS 服务器
nmcli con mod static ipv4.dns 10.0.0.10
nmcli con mod static +ipv4.dns 8.8.8.8- 第二 DNS 服务器
修改 static 连接的 ip 地址
nmcli con mod static ipv4.addresses 10.0.0.100/24
nmcli con mod static +ipv4.addresses 10.20.30.40/16
nmcli connection reload [ id | uuid | path ] <ID>重新加载连接配置
nmcli connection delete [ id | uuid | path ] <ID>删除连接
nmcli device 管理网络设备
nmcli device wifi仅查看 wifi
nmcli device wifi connect [b]ssid -ask连接到特定 ssid 的 wifi
nmcli device show wlan0显示 wlan0 设备的信息
nmcli agent 交互式密钥代理
nmcli agent on启用交互式密码输入
systemd-resolved 网络名称解析
配置文件
/etc/systemd/resolved.conf
resolvectl [status]显示当前系统各接口 DNS 解析状态
resolvectl flush-cache刷新 DNS 缓存
resolvectl query <domain>查询指定域名的IP地址
Linux 网络接口管理
查看所有以太网网络接口
ip a
sudo lshw -class network
ethtool 管理以太网接口设备
sudo ethtool <device_name>查看网络接口的设备参数及特性--driver查看驱动信息--statistics查看统计信息
sudo ethtool --test <device_name> <offline|online>测试网络接口- 不是所有接口都支持测试
offline模式提供了更全面的测试,但它可能会通过重新启动来中断设备的工作
sudo ethtool --change <device_name>
ifconfig 管理网络接口配置
ifconfig已过时,建议使用新的ip指令
启用或禁用特定网络接口
sudo ifconfig <device_name> up
sudo ifconfig <device_name> down
Linux 端口管理
查看监听端口使用情况
netstat -tulpen较古老,建议使用ss替代
ss -tulpen 套接字(sockets)指令
-t: 只显示TCP协议相关的连接
-u: 只显示UDP协议相关的连接
-l: 只显示监听(LISTEN)状态的连接
-p,--processes: 显示与每个连接相关的进程信息
-e,--extended: 显示详细套接字信息
-n: 显示数字形式的IP地址和端口号
sudo lsof -Pan -i | grep LISTEN 显示打开文件(list opened file),包含进程
-a与(and)操作
-i指定要显示的网络连接信息。
-P强制不将端口号或主机名解析为符号名称
-n强制不将主机名解析为IP地址
sudo nmap -sTU -O {IP_addr}- 需要安装nmap
查看特定端口使用情况
sudo lsof -Pan -i :{port}
查看特定进程占用端口
sudo lsof -Pan -i -p {PID}
Linux 域名解析
/etc/hostname 主机名配置文件和 /etc/hosts 本地域名解析文件
参考资料
hosts File Format for TCP/IP
hosts File Format for TCP/IP
Defines the Internet Protocol (IP) name and address of the local host and specifies the names and addresses of remote hosts.
/etc/hostname仅包含主机名,需要与/etc/hosts中的DNS记录结合形成完全限定域名(FQDN, Fully Qualified Domain Name)
hostname -A查看当前主机 FQDN
如设置 FQDN 为 foo.example.com
/etc/hostname- 仅包含
foo - 通过 hostnamectl 修改,请勿直接修改
/etc/hosts127.0.0.1 foo.example.com foo
hostnamectl 主机名配置工具
hostnamectl status- 查看主机名及其环境配置
hostnamectl hostname <to-set-name>- 查看主机名或设置主机名
/etc/systemd/resolved.conf systemd-resolved 服务的主配置文件
- 修改后需要重启
systemd-resolved服务 systemctl restart systemd-resolved
- 部分特殊配置项
Domains=~.~指示了一个“路由专用”域(routing-only domain),意味着该域不会被用作默认搜索路径的一部分来补全不完全限定的主机名.代表根域,所有的查询都将被视为完全限定域名(FQDN)
resolvectl 域名解析配置工具
一些常用指令
resolvectl status- 查看当前域名解析配置
resolvectl flush-caches- 清理DNS记录缓存
resolvectl query example.com- 返回对应域名的 DNS 记录
resolvectl dns <interface> <dns_server1> <dns_server2>- 设置接口对应 DNS 服务器
resolvectl domain <interface> example.internal- 设置接口对应检索域
特殊DNS服务器 nameserver 127.0.0.53
本地回环地址,与 systemd-resolved 服务相关联
- 允许系统通过
systemd-resolved进行名称解析,而不是直接查询外部 DNS 服务器
- 能够同时管理多个网络接口上的DNS配置,并根据当前活动连接自动选择合适的DNS服务器进行查询
如何禁用 nameserver 127.0.0.53
resolvectl status | grep resolv.confresolv.conf mode: stub代表当前配置了127.0.0.53为域名服务器
vim /etc/systemd/resolved.conf#DNSStubListener=yes取消注释并改为DNSStubListener=no即可禁用
/etc/resolv.conf DNS 解析器配置文件
- 定义DNS服务器
nameserver <ip|hostname.domain>
定义检索域 search <search_domain1> <search_domain2>
- 设置本地检索域
local后,在解释不完全限定域名hostname时,会先将hostname与本地检索域local组成 FQDN(hostname.local)进行DNS查询
hostname包含.时,首次将可能进行对 FQDN(hostname)进行DNS查询而跳过本地检索域- 可以在
ndot:<value> 中进行设置
- 排序列表
sortlist - 在解析具有多个 IP 地址的域名时确定 IP 地址的优先级
选项 options <option>:<value>
timeout:5设置超时等待时间为 5 s
ndot:1设置域名可以具有的最小点数,默认值为 1
attempts:5设置尝试次数- 仅当所有配置的名称服务器未能返回结果时才算作重试
resolvconf 管理 /etc/resolv.conf
参考资料
- 多个工具会修改
/etc/resolv.conf,resolvconf作为中间件集中管理 DNS 配置来合并配置、避免冲突等
dnsmasq 轻量级 DNS 服务器和 DHCP 服务器软件
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/linux_network
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
