あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

NetworkManagerで有線LANのIPアドレスを固定にする

Raspberry Piでは無線LANの再接続対応のためにNetworkManagerを使ってましたが、NetworkManagerが入ってて有線LANのIPアドレスを固定したい時の設定を今までしてなくて、しようと思ったのでやり方をメモ。

こちらの記事が参考になりました。

Vagrantのprivate_networkをCentOS7.0で設定 - Qiita

デフォルトでは"Wired Connection 1"が有線LANの設定としてnmcli conコマンドの一覧で確認できますが、設定ファイルが見当たりません。

pi@ejebian:~ $ nmcli con
NAME                UUID                                  TYPE             DEVICE 
Wired connection 1  8658065d-21ef-426f-ac48-a1b8725eec46  802-3-ethernet   eth0
pi@ejebian:~ $ ls /etc/NetworkManager/system-connections/
pi@ejebian:~ $

それはさておき設定。

$ sudo nmcli con mod "Wired connection 1" ipv4.addresses "192.168.29.89/24 192.168.29.1"
$ sudo nmcli con mod "Wired connection 1" ipv4.dns "192.168.29.39"
$ sudo nmcli con mod "Wired connection 1" ipv4.method "manual"

意味は以下の様になります。

$ sudo nmcli con mod "Wired connection 1" ipv4.addresses "IP/prefix DefaultGateway"
$ sudo nmcli con mod "Wired connection 1" ipv4.dns "DNS"
$ sudo nmcli con mod "Wired connection 1" ipv4.method "manual"

ヘルプを見るとつなげてかけるようなので、こういう書き方もできるみたいです。

$ sudo nmcli con mod "Wired connection 1" ipv4.addresses "192.168.29.89/24 192.168.29.1" ipv4.dns "192.168.29.39" ipv4.method "manual"

あとIPv6を切りたい方はこれ。

$ sudo nmcli con mod "Wired connection 1" ipv6.method "ignore"

設定内容を確認するには以下のコマンドを実行します。

pi@ejebian:~ $ nmcli con show "Wired connection 1"
connection.id:                          Wired connection 1
connection.uuid:                        8658065d-21ef-426f-ac48-a1b8725eec46
connection.interface-name:              --
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1450881021
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
connection.gateway-ping-timeout:        0
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             (略)
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:   
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:        
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            
ipv4.method:                            manual
ipv4.dns:                               192.168.29.39
ipv4.dns-search:                        
ipv4.addresses:                         { ip = 192.168.29.89/24, gw = 192.168.29.1 }
ipv4.routes:                            
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv6.method:                            ignore
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
GENERAL.NAME:                           Wired connection 1
GENERAL.UUID:                           8658065d-21ef-426f-ac48-a1b8725eec46
GENERAL.DEVICES:                        eth0
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.VPN:                            no
GENERAL.ZONE:                           --
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/6
GENERAL.SPEC-OBJECT:                    --
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         ip = 192.168.29.89/24, gw = 192.168.29.1
IP4.DNS[1]:                             192.168.29.39
IP6.ADDRESS[1]:                         ip = (略…あれ、無効化してるけど出るのか?)
IP6.ADDRESS[2]:                         ip = (略…これはLinkLocalのぶん)

設定が終わると、さっきはなかった設定ファイルができてたりします。設定の拍子で生成されるようです。内容も割とシンプルでした。

pi@ejebian:~ $ ls /etc/NetworkManager/system-connections/
Wired connection 1
pi@ejebian:~ $ sudo cat /etc/NetworkManager/system-connections/Wired\ connection\ 1 
[ethernet]
mac-address=(略)

[connection]
id=Wired connection 1
uuid=8658065d-21ef-426f-ac48-a1b8725eec46
type=ethernet
timestamp=1450881021

[ipv6]
method=ignore

[ipv4]
method=manual
dns=192.168.29.39;
address1=192.168.29.89/24,192.168.29.1

無線LANの場合も、IDを変えれば同じでしょう。

満足。