Ubuntu 20.04 设置静态IP

446 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情


title: Ubuntu 20.04 设置静态IP tags: [Linux] categories: [Linux]

服务器环境需要有静态的 IP 用于SSH登陆,本文记录 ubuntu 系统下设置静态IP的方法。

解决方案

  • 确定上网使用的网卡
  • 修改 NetworkManager 配置文件内容

确定网卡

  • ifconfig 命令可以查看当前网络配置
$ ifconfig
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.4  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::7285:c2ff:fe80:45d8  prefixlen 64  scopeid 0x20<link>
        inet6 2409:8a1e:8fc7:3bc0:7285:c2ff:fe80:45d8  prefixlen 64  scopeid 0x0<global>
        ether 70:85:c2:80:45:d8  txqueuelen 1000  (以太网)
        RX packets 8721  bytes 6897773 (6.8 MB)
        RX errors 0  dropped 1047  overruns 0  frame 0
        TX packets 6367  bytes 1362777 (1.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 961  bytes 94772 (94.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 961  bytes 94772 (94.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 其中 enp1s0 为网卡的 logical name
  • 或使用 sudo lshw -C network 命令
$ sudo lshw -C network 
  *-network                 
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:01:00.0
       logical name: enp1s0
       version: 11
       serial: 70:85:c2:80:45:d8
       size: 1Gbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.11.0-40-generic duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=192.168.1.222 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       resources: irq:22 ioport:e000(size=256) memory:91304000-91304fff memory:91300000-91303fff
  *-network DISABLED
       description: Ethernet interface
       physical id: 1
       logical name: virbr0-nic
       serial: 52:54:00:5a:47:3b
       size: 10Mbit/s
       capabilities: ethernet physical
       configuration: autonegotiation=off broadcast=yes driver=tun driverversion=1.6 duplex=full link=no multicast=yes port=twisted pair speed=10Mbit/s

  • logical name 为网卡名

这里我的网卡为 enp1s0

方法一

修改 NetworkManager 配置
  • 编辑/etc/netplan/**.yaml,不同电脑配置文件名不同,我的是01-network-manager-all.yaml

  • 编辑文件并为 enp1s0 添加配置内容

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp1s0:
      addresses:
        - 192.168.1.222/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [114.114.114.114]
                                                      

意思是在以太网接口enp1s0下,添加ipv4地址192.168.1.222,网关192.168.1.1,dsn服务器114.114.114.114。dsn服务器是必须要填的,但是每一行的缩进不是严格要求的.

应用修改
sudo netplan apply

方法二

有时 netplan 文件夹下没有文件,可以采用如下方法

  • 需要编辑2个文件

    • /etc/network/interfaces(配置IP和网关)
    • /etc/resolv.conf(配置DNS服务器)
  • 修改 /etc/network/interfaces 文件

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp1s0
allow-hotplug enp1s0
# iface enp1s0 inet dhcp
iface enp1s0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255

# This is an autoconfigured IPv6 interface
iface enp1s0 inet6 auto

  • 其中
配置含义
auto enp1s0开机自动连接网络
iface enp1s0 inet static设置静态IP
iface enp1s0 inet dhcpdhcp 自动获取IP
address 192.168.1.111静态 IPv4地址
netmask 255.255.255.0子网掩码
gateway 192.168.1.1网关
broadcast 192.168.1.255广播地址(也可以不写)
  • 配置 /etc/resolv.conf 文件,设置 dns
nameserver 192.168.1.1
nameserver 114.114.114.114
  • 重启网络(debian 系统)
service networking restart

测试

$ ip a
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 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 70:85:c2:80:45:d8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.222/24 brd 192.168.1.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 2409:8a1e:8fc7:3bc0:7285:c2ff:fe80:45d8/64 scope global dynamic mngtmpaddr 
       valid_lft 240888sec preferred_lft 154488sec
    inet6 fe80::7285:c2ff:fe80:45d8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

  • 可以看到 inet 192.168.1.222/24 表明修改静态IP成功

参考资料