本記事で紹介すること
本記事では、nmcliによるネットワーク設定変更コマンドを紹介します。
ネットワーク構成図、実行コマンド例、オプション説明の順にひたすらユースケースを紹介していきます。
nmcliとは何か、基本的なコマンド体系の説明については下記記事にまとめてあります。
まだの方は、先にこちらをお読みください。
記事が長いので、目次からジャンプして目的の設定例を確認する読み方がオススメです。
- 本記事で紹介すること
- 共通のオプション
- IPアドレスの設定
- デフォルトゲートウェイの設定
- DNSサーバの登録 (DNSクライアント設定)
- ルーティングの設定
- Dot1Qトランクポートの設定
- 最後に
- おすすめ記事
共通のオプション
nmcli で Connection を設定する際、必須となるオプションをここで先に紹介します。
以降の例では、以下の4オプションがどの例でも必ず登場します。
- type
- ifname
- Connectionを紐づける対象の Device名を指定する
- con-name
- Connection名を指定する
- 任意の文字列を指定可能
- 半角スペースなどは \ でエスケープが必要
- 2バイト文字は文字化けする
- Device名と揃えるのが基本的に無難
- autoconnect
- yes/no のいずれかを指定
- デフォルトはno
- yesの場合、OS起動時やConnection作成時に自動的にifname で指定したDeviceに紐づけられる
- noの場合、手動でnmcli connection up Connection名 を実行しない限り、Deviceに紐づけされない
以下の設定は任意ではありませんが、よく出てくるのでついでに紹介しておきます。
- ipv6.method
IPアドレスの設定
構成図
以下のようにL3スイッチとLinuxサーバが直結された構成を例にします。
nmcliコマンド例
nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore #### 今回紹介したいコマンド #### nmcli connection modify enp0s3 ipv4.method manual ipv4.addresses 10.0.0.2/24 # 設定反映 nmcli connection up enp0s3 #### 補足 #### # 以下のように1行で済ませることも可能 # nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv4.method manual ipv4.addresses 10.0.0.2/24 ipv6.method ignore
(補足1) セカンダリIPアドレスの設定
1つのConnectionに2つのIPアドレスを設定することも可能です。
# セカンダリIPアドレスの追加 nmcli connection modify +ipv4.addresses 10.0.0.102/24 # セカンダリIPアドレスの削除 nmcli connection modify -ipv4.addresses 10.0.0.102/24 # 設定反映 nmcli connection up enp0s3
(補足2) IPアドレスの削除
nmcli connection modify -ipv4.addresses 10.0.0.2/24 ipv4.method auto # 設定反映 nmcli connection up enp0s3
nmcliコマンドオプション
疎通確認
Linuxからスイッチに対してpingが通ることを確認できました。
ping 10.0.0.1 # PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. # 64 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=0.852 ms # 64 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=7.71 ms # 64 bytes from 10.0.0.1: icmp_seq=3 ttl=255 time=1.25 ms # ^C # --- 10.0.0.1 ping statistics --- # 3 packets transmitted, 3 received, 0% packet loss, time 2025ms # rtt min/avg/max/mdev = 0.852/3.272/7.712/3.143 ms
(参考) スイッチ側の設定手順
参考情報として、対向側のスイッチの設定も載せておきます。
下記リンクをクリックすると、スイッチの設定が表示されます。
デフォルトゲートウェイの設定
構成図
nmcliコマンド例
nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore ipv4.method manual ipv4.addresses 10.0.0.2/24 #### 今回紹介したいコマンド #### nmcli connection modify enp0s3 ipv4.gateway 10.0.0.1 # 設定反映 nmcli connection up enp0s3
(補足1) デフォルトゲートウェイの削除
# nmcli connection modify enp0s3 -ipv4.gateway 10.0.0.1 では削除できない nmcli connection modify enp0s3 ipv4.gateway 0.0.0.0 # 設定反映 nmcli connection up enp0s3
nmcliコマンドオプション
(参考) スイッチ側の設定手順
参考情報として、対向側のスイッチの設定も載せておきます。
下記リンクをクリックすると、スイッチの設定が表示されます。
DNSサーバの登録 (DNSクライアント設定)
次にDNSサーバの設定を行います。
今回は環境をインターネットに接続し、GoogleのDNSサーバ (8.8.8.8と8.8.4.4) を利用する構成としました。
構成図
デフォルトゲートウェイの例と同じ構成です。
nmcliコマンド例
nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore ipv4.method manual ipv4.addresses 10.0.0.2/24 ipv4.gateway 10.0.0.1 #### 今回紹介したいコマンド #### nmcli connection modify enp0s3 ipv4.dns 8.8.8.8 nmcli connection modify enp0s3 +ipv4.dns 8.8.4.4 # 以下のように1行でも表現可能 # この書き方はDNS削除や、セカンダリIPアドレス追加などには使えないので微妙 # nmcli connection modify enp0s3 ipv4.dns 8.8.8.8, 8.8.4.4 ##### 設定反映 ##### nmcli connection up enp0s3
(補足1) DNSサーバの削除
nmcli connection modify enp0s3 -ipv4.dns 8.8.8.8 -ipv4.dns 8.8.4.4 ##### 設定反映 ##### nmcli connection up enp0s3
nmcliコマンドオプション
疎通確認
今回はdigコマンドで確認しました。
ANSWER SECTIONにIPアドレスが表示されていれば、DNSの設定は成功です。
stopendy@linuxgui001:~$ dig google.com ; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52585 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 299 IN A 216.58.197.174 ;; Query time: 51 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Thu Jul 26 21:23:00 JST 2018 ;; MSG SIZE rcvd: 55 stopendy@linuxgui001:~$
(参考) スイッチ側の設定手順
デフォルトゲートウェイの設定と同じなので割愛します。
ルーティングの設定
構成図
nmcliコマンド例
nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv6.method ignore ipv4.method manual ipv4.addresses 10.0.0.2/24 #### 今回紹介したいコマンド #### nmcli connection modify enp0s3 ipv4.routes "192.168.0.0/24 10.0.0.1" # 設定反映 nmcli connection up enp0s3
(補足1) ルーティング設定の追加 (2行目以降)
2つ目以降の経路を追加するときは + をつけます。
+をつけないと設定が上書きされ、192.168.0.0/24宛の経路が消えてしまいます。
+の付け忘れが怖い方は、常に+を付けてしまうのも手です。
1つ目のルーティング追加時に+をつけても問題はありません。
nmcli connection modify enp0s3 +ipv4.routes "192.168.1.0/24 10.0.0.1" # 設定反映 nmcli connection up enp0s3
(補足2) ルーティング設定の削除
nmcli connection modify enp0s3 -ipv4.routes "192.168.0.0/24 10.0.0.1" nmcli connection modify enp0s3 -ipv4.routes "192.168.1.0/24 10.0.0.1" # 設定反映 nmcli connection up enp0s3
nmcliコマンドオプション
- ipv4.routes
(参考) スイッチ側の設定手順
デフォルトゲートウェイの設定と同じなので割愛します。
Dot1Qトランクポートの設定
VLAN Taggingのポートを設定する方法を説明します。
構成図
nmcliコマンド例
#### 今回紹介したいコマンド #### # 物理インターフェースに対応するコネクションを作成する # IPアドレスはアサインしない → ipv4.method disabled nmcli connection add type ethernet ifname enp0s3 con-name enp0s3 autoconnect yes ipv4.method disabled ipv6.method ignore # Tag VLAN用のサブインターフェースを作成する nmcli connection add type vlan ifname enp0s3.100 con-name enp0s3.100 autoconnect yes id 100 dev enp0s3 ipv4.method manual ipv4.address 10.0.0.2/24 ipv4.gateway 10.0.0.1 ipv6.method ignore # 設定反映 nmcli connection up enp0s3 nmcli connection up enp0s3.100
nmcliコマンドオプション
Dot1Q Taggingインターフェースの作成は、以下の2工程に分かれています。
- 物理インターフェース用のコネクションの設定
- サブインターフェース用のコネクションの設定
まず、物理インターフェース用のコネクション設定について説明します。
特に新しいオプションは使いません。
ipv4.method disabled により、IPv4アドレスをアサインしない構成にするだけでOKです。
次にDot1Q用途のサブインターフェース (CiscoでいうSVI) ですが、以下のようにオプションを設定します。
- type
- 今回はvlanを指定する
- (物理インターフェースを設定するときは、ethernetだった)
- ifname
- con-name
- Connection名を指定する (nmcli connection で表示される文字列を指定する)
- ifname と同様、どんな文字列でも指定可能 (2バイト文字や空白は避けたい)
- 細かい情報だが、con-name と ifname はどちらかのみ指定すれば、もう一方は自動補完される
- 例: con-name enp0s3.100
- dev
- Dot1Q サブインターフェースが紐づく Device名を指定する
- 任意文字列ではない。正確に指定する必要がある
- 例: dev enp0s3
- id
- Dot1Q サブインターフェースが Tagging に利用する VLAN ID を指定する
- 例: id 100
疎通確認
Linuxからスイッチに対するpingが通ることを確認しました。
ping 10.0.0.1 # PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. # 64 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=0.927 ms # 64 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=10.7 ms # ^C # --- 10.0.0.1 ping statistics --- # 2 packets transmitted, 2 received, 0% packet loss, time 1032ms # rtt min/avg/max/mdev = 0.927/5.857/10.788/4.931 ms
(参考) スイッチ側の設定手順
参考情報として、対向側のスイッチの設定も載せておきます。
下記リンクをクリックすると、スイッチの設定が表示されます。
最後に
以上、nmcliによるネットワーク設定方法を紹介しました。
他にも追加してほしい設定例などありましたら、コメント欄にてリクエストお願いします。
おすすめ記事
メモリ64GBの小型PCを10万円で購入し、Linuxをインストールしました。
脱Windowsによって得られたノウハウを日々まとめていますので、よろしければ是非読んでみてください。