armbian netplan静态 IP 配置全攻略,从动态到静态的详细步骤

背景知识

netplan 的引入:

  • 在较新的 Linux 发行版中(包括 Armbian),传统的 /etc/network/interfaces 文件已被弃用,取而代之的是 netplan 工具。
  • netplan 使用 YAML 格式的配置文件来管理网络接口。

静态 IP 的优势:

  • 静态 IP 地址不会随时间变化,便于远程访问和管理。
  • 对于需要长期运行的服务(如 NAS、Web 服务器等),静态 IP 是必需的。

设置ip静态地址

  1. 方法一:直接修改文件
    找到 netplan 配置文件,在这个文件夹一般只有一个文件,,位于* "/etc/netplan/"*目录下,文件名通常为类似以下之一:

    01-netcfg.yaml
    50-cloud-init.yaml
    00-default-use-network-manager.yaml
    10-dhcp-all-interfaces.yaml

    通过以下命令查看该目录下的文件: ls /etc/netplan/
    备份原始文件:

    sudo cp /etc/netplan/<文件名>.yaml /etc/netplan/<文件名>.yaml.bak

    使用文本编辑器打开配置文件:

    nano /etc/netplan/10-dhcp-all-interfaces.yaml.yaml

    原始代码如下:

    # Added by Armbian
    #
    # Reference: https://netplan.readthedocs.io/en/stable/netplan-yaml/
    #
    # Let systemd-networkd manage all Ethernet devices on this system, but be configured by Netplan.

    network:
    version: 2
    renderer: networkd
    ethernets:
    all-eth-interfaces:
    match:
    name: "e*"
    dhcp4: yes
    dhcp6: yes
    ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5
    all-lan-interfaces: # include interfaces that are renamed to 'lanX' by udev, e.g. nanopi-r2s
    match:
    name: "lan[0-9]*"
    dhcp4: yes
    dhcp6: yes
    ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5
    all-wan-interfaces: # include interfaces that are renamed to 'wanX' by udev, e.g. nanopi-r1
    match:
    name: "wan[0-9]*"
    dhcp4: yes
    dhcp6: yes
    ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5

    获取物理网卡的名称:

    # 显示所有网卡
    root@uefi-x86:~# ls /sys/class/net/
    br-5463f2193db1 docker0 ens33 lo
    # 显示虚拟网卡
    root@uefi-x86:~# ls /sys/devices/virtual/net
    br-5463f2193db1 docker0 lo
    # 显示物理网卡
    root@uefi-x86:~# ls /sys/class/net/ | grep -v "`ls /sys/devices/virtual/net/`"
    ens33
    ## 以下命令也可以检查网卡名称
    root@uefi-x86:~# ip link
    # 显示的第一个网卡 lo
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    # 显示的第二个网卡 ens33
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:37:52:a3 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    altname enx000c293752a3
    3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 0a:53:cc:0c:07:3c brd ff:ff:ff:ff:ff:ff
    4: br-5463f2193db1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
    link/ether 1a:5b:b3:95:7c:93 brd ff:ff:ff:ff:ff:ff
    5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
    link/ether f6:f9:95:5d:97:38 brd ff:ff:ff:ff:ff:ff
    root@uefi-x86:~#

    手动修改的代码如下:

    network:
    version: 2
    renderer: networkd
    ethernets:
    ens33: # 查得的物理网卡
    dhcp4: no # 禁用 DHCP
    addresses: [192.168.50.22/24] # 静态 IP 和子网掩码
    routes: # 定义默认路由
    - to: default # 表示所有流量
    via: 192.168.50.1 # 默认网关
    nameservers: # 设置 DNS 服务器
    addresses: [8.8.8.8,8.8.4.4] # DNS 服务器
    dhcp6: yes # 开启ipv6
    ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5
    all-lan-interfaces: # include interfaces that are renamed to 'lanX' by udev, e.g. nanopi-r2s
    match:
    name: "lan[0-9]*"
    dhcp4: yes
    dhcp6: yes
    ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5
    all-wan-interfaces: # include interfaces that are renamed to 'wanX' by udev, e.g. nanopi-r1
    match:
    name: "wan[0-9]*"
    dhcp4: yes
    dhcp6: yes
    ipv6-privacy: yes # Enabled by default on most current systems, but networkd currently doesn't enable IPv6 privacy by default, see https://man.archlinux.org/man/systemd.network.5
    # 以下命令用以检查以上的配置
    # 应用新的网络配置
    netplan apply
    # 检查网络接口:
    ip addr show ens33
    # 检查默认路由:
    ip route
  2. armbian-config工具修改
    输入以下命令以打开“armbian-config”工具

    armbian-config

    在菜单中选择“Network”,然后选择“Interfaces”,选择您想要配置的网络接口,通常是“ens33”。

    选择“Static”以配置静态IP地址,然后输入您想要设置的IP地址、子网掩码(默认的好像是24,不用改)和网关。完成配置后,选择“OK”以保存更改。
    最后,您可以通过输入“ifconfig”命令来验证您的IP地址是否已更改。

    root@uefi-x86:~# ifconfig
    -bash: ifconfig: 未找到命令 # 如果出现这个,改用下面的命令
    root@uefi-x86:~# ip addr show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
    valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 00:0c:29:37:52:a3 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    altname enx000c293752a3
    3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 0a:53:cc:0c:07:3c brd ff:ff:ff:ff:ff:ff
    inet 192.168.50.22/24 brd 192.168.50.255 scope global br0
    valid_lft forever preferred_lft forever
    inet6 240e:386:826:e700::1000/128 scope global dynamic noprefixroute
    valid_lft 1544sec preferred_lft 1544sec
    inet6 240e:386:826:e700:853:ccff:fe0c:73c/64 scope global dynamic mngtmpaddr noprefixroute
    valid_lft 1241sec preferred_lft 1241sec
    inet6 fe80::853:ccff:fe0c:73c/64 scope link
    valid_lft forever preferred_lft forever
    4: br-5463f2193db1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 1a:5b:b3:95:7c:93 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-5463f2193db1
    valid_lft forever preferred_lft forever
    5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether f6:f9:95:5d:97:38 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
    valid_lft forever preferred_lft forever
    root@uefi-x86:~#

    修改完成之后会在* "/etc/netplan/"*文件夹下有一个新的文件【armbian.yaml】,大概内容如下:

    network:
    version: 2
    renderer: networkd
    ethernets:
    ens33:
    dhcp4: false
    dhcp6: true
    bridges:
    br0:
    addresses:
    - "192.168.50.22/24"
    nameservers:
    addresses:
    - 8.8.8.8
    - 8.8.4.4
    interfaces:
    - ens33
    routes:
    - metric: 200
    to: "0.0.0.0/0"
    via: "192.168.50.1"