Ubuntuの固定IP設定方法

最近多くなったネットワーク設定絡みの記事。
完全に自分の備忘録です (≡人≡;)

設定方法

GUI

GUIで設定する際は、標準で導入されている"NetworkManager"での設定を推奨します。
※"NetworkManager"を使用すると、後述するCUIでの設定ファイル"/etc/network/interfaces.d/base"は削除されます

概要

  • タスクバーのネットワークアイコンから"接続の編集"を選択
  • IPv4設定、IPv6設定を登録し、[保存]ボタンをクリック

設定サンプル

NetworkManagerで設定すると、下記ファイルが書きだされます。

変更前

$ sudo cat /etc/NetworkManager/system-connections/有線接続\ 1 
[connection]
id=有線接続 1
uuid=fb8e7b93-1b7c-3d5e-a13c-89bac03d7732
type=ethernet
autoconnect-priority=-999
permissions=
secondaries=
timestamp=1512594692

[ethernet]
duplex=full
mac-address=D4:3D:7E:##:##:##
mac-address-blacklist=

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=auto

変更後

$ sudo cat /etc/NetworkManager/system-connections/有線接続\ 1 
[connection]
id=有線接続 1
uuid=fb8e7b93-1b7c-3d5e-a13c-89bac03d7732
type=ethernet
autoconnect-priority=-999
permissions=
secondaries=
timestamp=1512594692

[ethernet]
duplex=full
mac-address=D4:3D:7E:##:##:##
mac-address-blacklist=

[ipv4]
address1=192.168.0.2/24,192.168.0.1
dns=8.8.8.8;
dns-search=test;
may-fail=false
method=manual

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=auto

CUI

"NetworkManager"を使わずに従来通り手動で設定する場合は、事前に"NetworkManager"を無効にします。
※有効のままだと"NetworkManager"が設定を上書きするため

NetworkManager無効化

$ systemctl status network-manager.service
● NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor p
   Active: active (running) since 木 2017-12-07 06:34:15 JST; 9s ago
     Docs: man:NetworkManager(8)
 Main PID: 2690 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           ├─2690 /usr/sbin/NetworkManager --no-daemon
           ├─2699 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts 
           └─2725 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helpe

MS-7835:~$ systemctl stop network-manager.service

MS-7835:~$ systemctl status network-manager.service
● NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; enabled; vendor p
   Active: inactive (dead) since 木 2017-12-07 06:34:35 JST; 2s ago
     Docs: man:NetworkManager(8)
  Process: 2690 ExecStart=/usr/sbin/NetworkManager --no-daemon (code=exited, sta
 Main PID: 2690 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/NetworkManager.service
           ├─2699 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts 
           └─2725 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helpe

MS-7835:~$ sudo systemctl disable network-manager.service
[sudo] link のパスワード: 
Synchronizing state of network-manager.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install disable network-manager
insserv: warning: current start runlevel(s) (empty) of script `network-manager' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `network-manager' overrides LSB defaults (0 1 6).
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.

MS-7835:~$ systemctl status network-manager.service
● NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; disabled; vendor 
   Active: inactive (dead) since 木 2017-12-07 06:34:35 JST; 1min 18s ago
     Docs: man:NetworkManager(8)
 Main PID: 2690 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/NetworkManager.service
           ├─2699 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts 
           └─2725 /sbin/dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helpe

設定サンプル

インターフェース名を調べる

以下の例では"enp2s0"です。

$ ip addr
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether d4:3d:7e:9a:d5:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.15/24 brd 192.168.2.255 scope global dynamic enp2s0
       valid_lft 85764sec preferred_lft 85764sec
    inet6 240b:11:8d80:4500:694e:f835:b500:c1a/64 scope global temporary dynamic 
       valid_lft 604167sec preferred_lft 85650sec
    inet6 240b:11:8d80:4500:da09:a824:e306:27b/64 scope global mngtmpaddr 

変更前

$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

変更後

インターフェース名{enp2s0}は適宜書き換えてください。

$ cat /etc/network/interfaces
auto enp2s0
iface enp2s0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.254
# dns-nameservers 192.168.0.1 8.8.8.8

再起動

再起動後に設定が反映されます。

ネットワークサービス再起動でも設定が反映されることがあるようですが、私の環境ではダメでした。

$ sudo /etc/init.d/networking restart

※"NetworkManager"は再起動しなくても反映するようですが、反映タイミングが良くわからないため再起動を推奨します