Linux静态IP

配置文件位置

释放IP重新获取

# 释放IP
dhclient -r

# 重新获取
dhclient

配置

Arch

Systemd Networkd 服务方式(推荐)

使用 Systemd 进程管理器 的 Systemd Networkd 服务 配置静态IP地址的方法更为通用

[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
sudo systemctl disable netctl@eth0.service
sudo pacman -Rns netctl
sudo systemctl stop dhcpcd
sudo systemctl disable dhcpcd
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd

sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved

摘抄于: arch linux配置IP(静态或动态)

使用wpa_supplicant连接无线网络

netctl 方法

netctl 是用于控制systemd服务网络管理器的命令行工具,在 /etc/netctl/examples/ 目录下保存着配置模板,如 ethernet-dhcp DHCP模板、 ethernet-static 静态地址模板

sudo cp /etc/netctl/examples/ethernet-static /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 systemctl stop dhcpcd
sudo systemctl disable dhcpcd

NetworkManager

NetworkManager - ArchWiki

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

推荐使用 nmclinmtui 配置网络
(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服务器的步骤:

  1. 创建或编辑 /etc/systemd/resolved.conf 文件(需要获取管理员权限):
sudo vim /etc/systemd/resolved.conf
  1. 在文件中添加或修改 DNSFallbackDNS ,例如:
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1 9.9.9.9
  1. 保存文件并退出编辑器。

  2. 重启 systemd-resolved 服务以应用更改:

sudo systemctl restart systemd-resolved

请注意,systemd-resolved 需要配置开机自启。

sudo systemctl enable systemd-resolved --now