Linuxコマンドでのネットワークの設定方法

Linuxコマンドでのネットワークの設定方法

ここではRedHat系のAlmaLinuxを例に、hostnamectlコマンドを使ったホスト名の設定方法や、nmcliコマンドを使ったネットワーク設定の方法を解説します。

ホスト名の設定

ホスト名を設定するときは、以下のようにhostnamectlコマンドを使って設定します。

# hostnamectl set-hostname <ホスト名>

たとえば「server1.example.com」というホスト名を設定したいときは、以下のようにコマンドを実行します。

# hostnamectl set-hostname server1.example.com

hostnamectlコマンドでホスト名を設定すると「/etc/hostname」ファイルに反映され、設定内容はシステムを再起動しても有効です。なお、従来のhostnameコマンドでホスト名を変更した場合は「/etc/hostname」ファイルに反映されないため、再起動するとホスト名が元に戻ります。

現在のホスト名を確認したいときは、以下のようにコマンドを実行します。

# hostnamectl

 Static hostname: server1.example.com
       Icon name: computer-vm
         Chassis: vm
      Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
         Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Virtualization: kvm
Operating System: AlmaLinux 9.5 (Teal Serval)
          Kernel: Linux 5.14.0-503.21.1.el9_5.x86_64
    Architecture: x86-64
 Hardware Vendor: OpenStack Foundation
  Hardware Model: OpenStack Nova

ネットワークインターフェース名の取得

nmcliコマンドでネットワーク設定を行う場合、ほとんどのコマンドでネットワークインターフェース名(デバイス名)を指定して実行するので、まずは設定するネットワークインターフェース名を以下のコマンドで確認します。

# nmcli device
DEVICE  TYPE      STATE    CONNECTION
eth0    ethernet  接続済み  eth0

設定情報の確認

ネットワークインターフェースの現在の設定内容を確認したいときは、以下のようにコマンドを実行します。

# nmcli -p connection show eth0
===============================================================================
接続プロファイルの詳細 (eth0)
===============================================================================
connection.id: eth0
connection.uuid: 21d47e65-1234-5678-af22-123456789085
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: eth0
connection.autoconnect: はい
connection.autoconnect-priority: 999
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1719364445
connection.permissions: --
connection.zone: --
connection.controller: --
connection.master: --
connection.slave-type: --
connection.port-type: --
connection.autoconnect-slaves: -1 (default)
connection.autoconnect-ports: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: 不明
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
lines 1-29

システム起動時にネットワークに接続

システム起動時に自動的にネットワーク接続するときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 connection.autoconnect yes

ちなみに、以下のように省略形で記述することもできます。

# nmcli c m eth0 connection.autoconnect yes

なお、nmcliコマンドでネットワーク設定を変更したときは、以下のコマンドでインターフェースを再起動して反映させる必要があり、以降で紹介するコマンドにも当てはまります。

# nmcli connection up eth0

DHCPから自動取得

DHCPからIPアドレスやDNSサーバーなどの情報を自動取得するよう設定にする場合は、以下のようにコマンドを実行します。

# nmcli connection modify eth0 ipv4.method auto

IPアドレスはDHCPサーバーから取得して、DNSサーバーは手動で設定したいときは、ignore-auto-dnsプロパティーを変更します。

# nmcli connection modify eth0 ipv4.ignore-auto-dns yes

手動でネットワーク設定

手動でIPアドレスなどを設定するときは、まず以下のコマンドで手動設定へ変更します。

# nmcli connection modify eth0 ipv4.method manual

IPアドレス

IPアドレスを手動で設定するときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 ipv4.addresses xxx.xxx.xxx.xxx/xx

ゲートウェイアドレス

デフォルトゲートウェイアドレスを手動で設定するときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 ipv4.gateway xxx.xxx.xxx.xxx

DNSサーバー

DNSサーバーアドレスを手動で設定するときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 ipv4.dns "xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy"

なお、設定済みのDNSサーバーアドレスに追加したいときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 +ipv4.dns zzz.zzz.zzz.zzz

登録済みのDNSサーバーアドレスを削除したいときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 -ipv4.dns xxx.xxx.xxx.xxx

検索ドメイン(DNSサフィックス)の設定

ドメイン名を省略してホスト名を指定した際に、暗黙で補完されるドメイン名を設定したいときは、以下のコマンドで、検索ドメイン(DNSサフィックス)を設定できます。以下では、ホスト名だけを指定したときに、ドメイン名としてhogehoge.comが補完されます。

nmcli connection modify eth0 ipv4.dns-search hogehoge.com

スタティックルートの追加

特定の通信でネットワーク経路を指定したいときは、以下のコマンドでスタティックルート(静的ルート)を追加できます。以下では192.168.10.0/24のネットワークにアクセスするときに、ゲートウェイとして10.0.0.1を設定しています。

# nmcli connection modify eth0 +ipv4.routes "192.168.10.0/24 10.0.0.1"

追加したスタティックルートを削除したいときは、以下のようにコマンドを実行します。

# nmcli connection modify eth0 -ipv4.routes "192.168.10.0/24 10.0.0.1"

MTU値の調整

ネットワークインターフェースのMTU値を変更したいときは、以下のようにコマンドを実行します。以下のコマンドでは、MTU値を1422バイトに設定しています。

# nmcli connection modify eth0 802-3.mtu 1422

IPv6の無効化

現在のLinuxでは、デフォルトでIPv4とIPv6の両方が有効化されていますが、IPv6を無効化したいときは、以下のコマンドで無効化できます。

システム全体でIPv6を無効化したいとき

# grubby --update-kernel ALL --args ipv6.disable=1

コマンド実行後、システムを再起動するとことで設定が適用されます。

指定したインターフェースだけIPv6を無効化したいとき

# nmcli connection modify eth0 ipv6.method "disabled"

あとがき

一般的なネットワーク設定であれば、ここで紹介しているコマンドで対応できるのではないでしょうか。ご活用あれ。