netctlを使ってIPアドレスの固定

1.サンプルファイルの利用

/etc/netctl/examplesに設定ファイルのサンプルが準備されています。

固定IPアドレスを利用するには、この中のethernet-staticというファイルを/etc/netctl/以下に設置し、これを書き換えます。

そのままのファイル名でも良いですが、わかりやすくmynet_confというファイルにしてコピーします。

$ sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/mynet_conf

2.下調べ

編集の前に下調べをしておかねばなりません。

$ ip a

以下の表示の中から、2;の次に表示されるethernetのIDを覚えておきます。

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: <enp0s3>: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    (以下省略)

3.設定ファイルの編集

そのうえで、先程のファイルを編集します。

$ sudo nano /etc/netctl/mynet_conf

escription='A basic static ethernet connection'
Interface=enp0s3
# ip aで表示されたネットワークカードIDに入れ替え 
Connection=ethernet
IP=static
Address=('192.168.1.0/24')
# 自分のネットワークのアドレスに変更
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.1.1'
DNS=('192.168.1.1')
## For IPv6 autoconfiguration
#IP6=stateless
## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'

4.設定の反映とDHCPサービスの停止、再起動

netctlを起動し、設定を反映します。

$ sudo netctl start mynet_conf(設定ファイル)

【2018-11-22追記】

Job for netctl@mynet_conf.service failed because the control process exited with error code.
See "systemctl status netctl@mynet_conf.service" and "journalctl -xe" for details.

 以前にはなかったような気がするが、エラーが表示された。詳細は以下のとおり。

$ sudo systemctl status netctl@mynet_conf

● netctl@mynet_conf.service - Networking for netctl profile mynet_conf
   Loaded: loaded (/usr/lib/systemd/system/netctl@.service; static; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2018-11-22 09:35:51 JST; 12min ago
     Docs: man:netctl.profile(5)
  Process: 513 ExecStart=/usr/lib/netctl/network start mynet_conf (code=exited, status=1/FAILURE)
 Main PID: 513 (code=exited, status=1/FAILURE)

Nov 22 09:35:51 kurafuto systemd[1]: Starting Networking for netctl profile mynet_conf...
Nov 22 09:35:51 kurafuto network[513]: Starting network profile 'mynet_conf'...
Nov 22 09:35:51 kurafuto network[513]: The interface of network profile 'mynet_conf' is already up
Nov 22 09:35:51 kurafuto systemd[1]: netctl@mynet_conf.service: Main process exited, code=exited, status>
Nov 22 09:35:51 kurafuto systemd[1]: netctl@mynet_conf.service: Failed with result 'exit-code'.
Nov 22 09:35:51 kurafuto systemd[1]: Failed to start Networking for netctl profile mynet_conf.

ArchWiKiには以下の解説があった。

ただし、netctl はネットワークインターフェイスデバイスが既に起動している場合 (例えば dhcpcd を使っている場合) はプロファイルを実行しません。

そうか、dhcpcdサービスをとめないとだめなんだ。とにかく先に進む。

$ sudo netctl enable mynet_conf # それでは有効化だけにする

$ sudo systemctl disable dhcpcd.service # dhcpcd サービスを無効化する

$ sudo shutdown -r now

うまく起動した。 

● netctl@mynet_conf.service - A basic static ethernet connection
   Loaded: loaded (/usr/lib/systemd/system/netctl@.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/netctl@mynet_conf.service.d
           └─profile.conf
   Active: active (exited) since Thu 2018-11-22 10:07:53 JST; 3min 15s ago
     Docs: man:netctl.profile(5)
  Process: 322 ExecStart=/usr/lib/netctl/network start mynet_conf (code=exited, status=0/SUCCESS)
 Main PID: 322 (code=exited, status=0/SUCCESS)
   Status: "online"

Nov 22 10:07:50 kurafuto systemd[1]: Starting A basic static ethernet connection...
Nov 22 10:07:50 kurafuto network[322]: Starting network profile 'mynet_conf'...
Nov 22 10:07:53 kurafuto systemd[1]: Started A basic static ethernet connection.
Nov 22 10:07:54 kurafuto network[322]: Started network profile 'mynet_conf'

コメント

タイトルとURLをコピーしました