ip_address

今使用している Ubuntu 20.04 LTS のデスクトップ版で固定IPアドレスを設定する方法。

Ubuntu デスクトップは、デフォルトでDHCPサーバーから取得したIPアドレスが自動設定されるため、再起動すると別のIPアドレスに変わることもある。

クライアントPCでUbuntuのIPアドレスを接続先として設定している場合、Ubuntu起動する度のIPアドレスを確認し、設定を更新する必要性が出てきてしまい、大変面倒。

なので、サーバーとして使用する場合、Ubuntuデスクトップに固定IPアドレス(Static IP address)を設定したほうが良い。

本当はインストールの時に設定できたらしいんだけど、知らなかったので、今回は後から設定。。。

以前は /etc/network/interfaces ファイルを修正して固定IPアドレスを設定してたようだが、今は netplan を使って固定IPアドレスを設定する。

netplan を使ったIPアドレス変更方法
  1. ネットワークディレクトリを確認
  2. ネットワーク設定ファイルをコピー
  3. コピーしたネットワーク設定ファイルを編集
  4. ネットワーク設定を反映させる

netplan ディレクトリ を確認

まずは、cd /etc/netplan で netplan ディレクトリを確認する。

Ctrl + Alt + T でターミナルを開き、cd /etc/netplan netplan ディレクトリ(configuration file が入っている)の中に。

ip aでネットワークアダプタを確認する。

XXX:/etc/netplan$ 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 XXX.XXX.XXX.XXX/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:0b:05:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.114/24 brd 192.168.110.1 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 feXX::XXX:Xdff:feXb:XXX/64 scope link
valid_lft forever preferred_lft forever 

"lo" loop back。今回は関係ない。

見るところは "2: eth0" 。このPCネットワークアダプターは "eth0"。これはPCやネットワークによって違う。

inet 192.168.1.114/24 は自動に割り振られたIPアドレス。/24はプレフィックス。

上記だと、192.168.1までがネットワーク部で、114がホスト部という事になる。

サブネットマスクは 225.225.225.0。

ファイルの場所を確認

lsでファイルの場所を確認する。

XXX:/etc/netplan$ ls
01-netcfg.yaml.save 01-network-manager-all.yaml

確認すると、必要な情報は "01-network-manager-all.yaml" ファイルの中にあるらしい。

ネットワーク設定ファイルを開いて情報を更新

nano エディタでyamlファイルを開く。

sodo nano 01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

versionは 2nd ver. で、renderer は NetworkManager。

ここに情報を入れていく。

スペースを2個あけて(大事)、ethernets:と記載。

アダプター名を入れる

改行して、スペースをさらに2個あけ、アダプター名を入れる。

アダプター名は、先に確認していた "eth0" の事。

dhep を止める

改行して、スペースをさらに2個あけ、 dhcp4: noと入れる(もしくはfalse。dhcpが自動でIPアドレスを割り当てないように、というコマンド。

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
      dhcp4: no

 

固定IPアドレスを割り当てる

次に指定したい固定IPアドレスを入れるが、ここでの注意点2つ。

  • グローバルIPアドレスは使わない
  • すでに使われているIPアドレスは使わない

グローバルIPアドレスは使わない

インテ-ネットに出てよいIPアドレスとローカル・エリア・ネットワーク(LAN)内でしか使えないIPアドレスがあり、範囲が決まっている。

ローカルでセットする場合は、通常ローカルIPアドレス群を使う。

一般家庭なら、ルーターのネットワーク内で指定するので、ルーターのIPアドレスを確認してからセットする。

例えばルーターが192.168.12.1だった場合は、192.168.12.2~192.168.12.254の範囲内で好きなものを割り当てて良い。

ネットワーク部は同じにして、ホスト部を変更する。他と被らないように。サブマスクは同じに。

サブマスク等の説明は下記参照。

既に使われているIPアドレスを使わない

すでに使われているIPアドレスを使うと競合して切断されてしまうので、ping コマンドで確認してから設定する。

例えば、 192.168.1.2 が使われているかどうか確認する場合、

ping -c 4 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=3.55 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=128 time=7.28 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=128 time=2.34 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=128 time=4.66 ms

--- 192.168.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 2.347/4.461/7.280/1.822 ms

上記だと反応があるので、同じネットワーク内の他のデバイスで使われているということ。

これを例えば、 192.168.1.4 が使われているかどうか確認すると、

ping -c 4 192.168.1.4
PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data.
64 bytes from 192.168.1.4: Destination Host Unreachable
64 bytes from 192.168.1.4: Destination Host Unreachable
64 bytes from 192.168.1.4: Destination Host Unreachable
64 bytes from 192.168.1.4: Destination Host Unreachable

--- 192.168.1.2 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3058ms
pipe 4

"unreachable" と出たので、誰も使っておらず、このアドレスを使用しても大丈夫、という事。

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
    addresses: [192.168.1.4/24]

Gateway は default routes で

この次は gateway の指定になるが、先日 gateway4 で警告がでたので、

推奨されている default routes で指定することに。

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
    addresses: [192.168.1.4/24]
    routes:
      - to: default

Gateway のはホストOSと同じでOK

ホストOSのGatewayは、W + R -> cmd でコマンドプロンプトを開き、 "cmd" と入力。

Ethernet adapter イーサネット:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : feXX::dXXc:ebXX:dXX:aXXa%XX
IPv4 Address. . . . . . . . . . . : XXX.XXX.XXX.XXX
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : XXX.XXX.XXX.XXX

DNS サーバの指定

name serverを指定する。DNS サーバの IP アドレスをカンマ区切りで複数指定できる。

ここではとりあえず Google Public DNS の 8.8.8.8, 8.8.4.4 を指定すればOK。

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
    addresses: [192.168.1.4/24]
    routes:
      - to: default
    nameservers:
      addresses: [8.8.8.8, 8.8.4.4]

情報を保存してエディタを閉じる

Ctrl + X で Exit。

"Save modified buffer?" と聞かれるので、"Y" (Yes) を押して Enter。yaml ファイルが上書きされた。

netplan をアプライ

sudo netplan tryで変更を試みる。

XXX:/etc/netppan$ sudo netplan try
Do you want to keep these settings?

Press ENTER before the timeout to accept the new configuration

Changes will revert in XX seconds

問題なさそうなので Enter を押す。Configuration が アクセプトされる。

 

OK そうなので、 sudo netplan apply で適応する。

XXX:/etc/netppan$ sudo netplan apply

ip a で確認すると、

XXX:/etc/netplan$ 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 XXX.XXX.XXX.XXX/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:0b:05:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.110.1 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 feXX::XXX:Xdff:feXb:XXX/64 scope link
valid_lft forever preferred_lft forever 

"eth0" の inet に記載されている IPv4 が、設定した値に変更されていた。

References