Linux静态IP
配置文件位置
- Arch :
/etc/netctl/eth0
或/etc/systemd/network/eth0.network
取决于安装的网络管理工具 - RedHat、CentOS :
/etc/sysconfig/network-scripts/ifcfg-eth0
- 增加网卡后未自动生成配置文件时:复制已有的网卡配置文件,修改配置文件内的网卡名称、UUID(
nmcli con show
)、MAC地址(ip addr
)。
- 增加网卡后未自动生成配置文件时:复制已有的网卡配置文件,修改配置文件内的网卡名称、UUID(
- RedHat 9 、CentOS 9 Stream :
/etc/sysconfig/network-scripts/ifcfg-eth0
和/etc/NetworkManager/system-connections/eth0.nmconnection
(修改后应用配置待定) - OpenSUSE :
/etc/sysconfig/network/ifcfg-eth0
和/etc/sysconfig/network/routes
- Debian、Ubuntu 14/16、Alpine :
/etc/network/interfaces
- Ubuntu 18/20 :
/etc/netplan/配置文件.yaml
如01-network-manager-all.yaml
释放IP重新获取
# 释放IP
dhclient -r
# 重新获取
dhclient
配置
Arch
Systemd Networkd 服务方式(推荐)
使用 Systemd 进程管理器 的 Systemd Networkd 服务 配置静态IP地址的方法更为通用
- 创建并编辑一个网路配置
/etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
Address=192.168.1.9/24
Gateway=192.168.1.254
DNS=223.5.5.5
DNS=119.29.29.29
- 如果配置了
netctl
需先停止并移除netctl
,需要的话还得停止dhcpcd
sudo systemctl disable netctl@eth0.service
sudo pacman -Rns netctl
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
- 启动并激活 Systemd Networkd 服务 和 systemd-resolved (用来解析DNS):
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
netctl 方法
netctl
是用于控制systemd服务网络管理器的命令行工具,在 /etc/netctl/examples/
目录下保存着配置模板,如 ethernet-dhcp
DHCP模板、 ethernet-static
静态地址模板
- 通过
ip a
查看网卡接口名,如eth0
- 复制模板作为配置
sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/eth0
- 修改
/etc/netctl/eth0
内容
Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.1.9/24')
Gateway=('192.168.1.254')
DNS=('225.5.5.5' '119.29.29.29')
- 激活开机启动
sudo netctl enable eth0
- 启动网卡
sudo netctl start eth0
- 关闭禁用 dhcp 服务
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
NetworkManager
RedHat、CentOS
# 配置命名
NAME=eth0
# 网卡 UUID ,通过 nmcli con show 查看
UUID=XXXX-XXXX-XXXX-XXXX-XXXX
# 网卡物理设备名
DEVICE=eth0
# 开机启用本配置
ONBOOT=yes
# 获取地址方式 dhcp(从DHCP获取)、static(静态地址)
BOOTPROTO=static
# IPv4 静态地址
IPADDR=192.168.7.6
# IPv4 默认网关
GATEWAY=192.168.7.1
# IPv4 子网掩码
#PREFIX=24
NETMASK=255.255.255.0
# 启用 IPv6 配置参数 IPV6ADDR 、 IPV6_DEFAULTGW
IPV6INIT=yes
# 关闭 IPv6 自动获取地址
IPV6_AUTOCONF=no
# IPv6 静态地址
IPV6ADDR=2001:db8::2/64
# IPv6 默认网关
IPV6_DEFAULTGW=2001:db8::1
# DNS 配置
#DNS1=1.1.1.1
#DNS2=8.8.8.8
# 如果 IPv4 或 IPv6 配置失败,则禁用此接口
#IPV4_FAILURE_FATAL=yes
#IPV6_FAILURE_FATAL=yes
# 详细参考: /usr/share/doc/initscripts-*/sysconfig.txt
RedHat 9 、CenCentOS 9 Stream
推荐使用 nmcli
或 nmtui
配置网络
(text user interface, 文字用户界面)
id=eth0
uuid=xxx-xxx-xxx-xxx-xxx
type=ethernet
# 连接优先级
autoconnect-priority=-999
interface-name=eth0
# 时间戳
timestamp=1651900177
[ethernet]
# 配置 IPv4
[ipv4]
# 配置静态 IP 、掩码 、网关
#address1=192.168.56.88/24,192.168.56.2
address1=192.168.56.88/24
# 配置 DNS
dns=1.1.1.1;114.114.114.114;
# 配置模式 auto (自动,DHCP)、manual (手动,staitc)、disabled (关闭)
method=manual
# 忽略自动获取的 DNS 参数
ignore-auto-dns=true
# 忽略自动获取的路由
ignore-auto-routes=true
# 始终不作为默认路由
never-default=true
# 配置 IPv6
[ipv6]
addr-gen-mode=eui64
address1=2001::1/64
ignore-auto-dns=true
ignore-auto-routes=true
method=manual
never-default=true
OpenSUSE
# /etc/sysconfig/network/ifcfg-eth0
# 开机启用本配置
STARTMODE='auto'
# 获取地址方式 dhcp(从DHCP获取)、static(静态地址)
BOOTPROTO='static'
# IPv4 静态地址
IPADDR='192.168.7.6'
# IPv4 子网掩码
#PREFIXLEN='24'
NETMASK='255.255.255.0'
# 网络地址
#NETWORK='192.168.7.0'
# 广播地址
#BROADCAST='192.168.7.255'
# IPv6 静态地址
#IPADDR_v6='2001:db8::2'
# IPv46子网掩码
#PREFIXLEN_v6='64'
# DNS 配置 ,推荐通过 `/etc/resolv.conf` 进行配置
#DNS1=1.1.1.1
#DNS2=8.8.8.8
# 默认网关
# /etc/sysconfig/network/routes
default 192.168.7.1 - -
#default 2001:db8::1 - -
# DNS 配置
# /etc/resolv.conf
# 注意 /etc/sysconfig/network/config 是否有配置:
# NETCONFIG_DNS_STATIC_SEARCHLIST
# NETCONFIG_DNS_STATIC_SERVERS
# NETCONFIG_DNS_FORWARDER
# 或配置了 netconfig 来禁用 DNS 配置更新:
# NETCONFIG_DNS_POLICY=''
nameserver 1.1.1.1
nameserver 8.8.8.8
Debian、Ubuntu 14/16、Alpine
使用空格提升可读性
# 自动配置 eth0 网卡
auto eth0
# 获取IPv4(inet)地址方式 dhcp(从DHCP获取)、static(静态地址)
iface eth0 inet static
# IPv4 静态地址
address 192.168.7.6
# 子网掩码
# netmask 24
netmask 255.255.255.0
# 默认网关
gateway 192.168.7.1
# DNS 配置 ,推荐通过 `/etc/resolv.conf` 进行配置
# dns-nameserver 1.1.1.1
# 获取IPv6(inet6)地址方式 dhcp(从DHCP获取)、static(静态地址)
iface eth0 inet6 static
# IPv6 静态地址
address 2001:db8::2/64
# 子网掩码
# netmask FFFF:FFFF:FFFF:FFFF::::
netmask 64
# 默认网关
gateway 2001:db8::1
Ubuntu 18/20
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses: [192.168.7.2/24]
optional: true
gateway4: 192.168.7.1
nameservers:
addresses: [1.1.1.1,8.8.8.8]
dhcp6: false
addresses: [2001:db8::2/64]
optional: true
gateway6: 2001:db8::1
nameserver:
addresses: [xxxx:xxxx:xxxx:xxxx...]
应用配置
Arch
sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved
sudo netctl restart eth0
RedHat、CentOS
sudo systemctl restart network
RedHat 9 、CenCentOS 9 Stream
nmcli connection reload && nmcli device reapply eth0
OpenSUSE
sudo systemctl restart network
sudo rcnetwork restart
sudo service network restart
sudo /etc/init.d/network restart
Debian、Ubuntu 14/16
sudo systemctl restart networking
sudo /etc/init.d/networking restart
Ubuntu 18/20
sudo netplan apply
DNS配置
修改 /etc/resolv.conf
实现
nameserver 223.5.5.5
nameserver 114.114.114.114
使用systemd-resolved
的系统
在使用systemd-resolved
的系统上,/etc/resolv.conf
通常是一个指向/run/systemd/resolve/stub-resolv.conf
的符号链接,该文件包含了本地的 stub resolver(存根解析器)地址127.0.0.53
。这个存根解析器会将DNS查询转发给实际的DNS服务器。
如查看当前系统使用的DNS服务器,可以使用以下命令:
systemd-resolve --status
该命令会显示每个网络接口的详细DNS配置信息,包括正在使用的DNS服务器。
如果想要永久更改DNS服务器设置,应该使用 systemd-resolved
的配置方法,而不是直接编辑 /etc/resolv.conf
。以下是如何为 systemd-resolved
设置DNS服务器的步骤:
- 创建或编辑
/etc/systemd/resolved.conf
文件(需要获取管理员权限):
sudo vim /etc/systemd/resolved.conf
- 在文件中添加或修改
DNS
和FallbackDNS
,例如:
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1 9.9.9.9
-
保存文件并退出编辑器。
-
重启
systemd-resolved
服务以应用更改:
sudo systemctl restart systemd-resolved
请注意,systemd-resolved
需要配置开机自启。
sudo systemctl enable systemd-resolved --now