CentOS/LinuxでDHCPのIPアドレスを再取得する方法【dhclient・nmcli・NetworkManager対応 2026年版】

2011年6月15日


LinuxマシンのIPアドレスがDHCPで払い出されているとき、「ネットワークの設定を変えたのにIPが変わらない」「別のサブネットに移動したのに古いIPのままになっている」という状況は珍しくありません。

このガイドでは、CentOS/RHEL、Ubuntu/Debian、Arch Linuxを含む主要ディストリビューションに対応した、DHCPのIPアドレスを再取得する方法をコマンドレベルで解説します。環境に応じた正しいコマンドを選べるよう、ディストリビューション別の対処法一覧も掲載しています。

実際に各コマンドの動作を検証し、出力例も含めて記載しています。

LinuxのDHCP再取得フロー図(DHCPRELEASE→DHCPDISCOVER→DHCPOFFER→DHCPACK)


前提条件

このガイドを進める前に、以下を確認してください。

  • 環境: CentOS 7/8/Stream、RHEL 7/8/9、Ubuntu 18.04〜24.04、Debian 10〜12、Arch Linux
  • 必要な権限: rootまたはsudo実行権限
  • 前提知識: コマンドラインの基本操作(コマンド入力・オプション指定)
# 現在のネットワークインターフェース名と割り当てIPを確認
ip addr show

# または(旧コマンド)
ifconfig -a

注意: CentOS 7以降では伝統的なeth0ではなく、ens33enp0s3などの予測可能なネットワークインターフェース名が使用されます。コマンド実行前に必ずインターフェース名を確認してください。


全体の流れ

このガイドは以下の6つの方法で構成されています。環境に応じた方法を選んでください。

  1. dhclientコマンドを使う方法 — 旧来のディストリビューション向け
  2. nmcliコマンドを使う方法 — NetworkManager環境向け(推奨)
  3. systemctlでNetworkManagerを再起動する方法 — 全インターフェースをリセット
  4. ifup / ifdownコマンドを使う方法 — Debian/Ubuntu系
  5. ip linkコマンドを使う方法 — より低レベルな制御
  6. ディストリビューション別の対処法一覧

各ディストリビューションとネットワーク管理コマンドの対応関係


ステップ1: dhclientコマンドを使う方法

dhclientはDHCPクライアントの伝統的なコマンドで、CentOS 6系やRHEL 6系、古いUbuntuで広く使われていました。現在でも多くのディストリビューションに同梱されています。

IPアドレスの解放(DHCPRELEASE)

まず現在のIPアドレスをDHCPサーバに返却します。

# インターフェース名を指定して解放
sudo dhclient -r eth0

# または全インターフェースを解放
sudo dhclient -r

実行例(出力あり):

Internet Systems Consortium DHCP Client V3.0.5-RedHat
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/00:0c:29:xx:xx:xx
Sending on   LPF/eth0/00:0c:29:xx:xx:xx
Sending on   Socket/fallback
DHCPRELEASE on eth0 to 192.168.1.1 port 67

DHCPRELEASE on eth0 to 192.168.1.1 port 67 の行が表示されれば、DHCPサーバへの返却が成功しています。

IPアドレスの再取得(DHCPDISCOVER → DHCPACK)

# インターフェースを指定して再取得
sudo dhclient eth0

# または(インターフェース名なし)
sudo dhclient

実行例(出力あり):

Internet Systems Consortium DHCP Client V3.0.5-RedHat
Copyright 2004-2006 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/00:0c:29:xx:xx:xx
Sending on   LPF/eth0/00:0c:29:xx:xx:xx
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPOFFER from 192.168.1.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.128 -- renewal in 43200 seconds.

bound to 192.168.1.128 -- renewal in 43200 seconds. の行が、IPアドレスの取得成功を示します。renewal in 43200 seconds はIPアドレスのリース更新までの秒数(この例では12時間)です。

解放と再取得を一括実行

# -r(release)と新規取得を組み合わせる
sudo dhclient -r eth0 && sudo dhclient eth0

よくあるミス: dhclientコマンドが見つからない場合 → CentOS 7以降やUbuntu 18.04以降ではNetworkManagerが管理しているため、nmcliコマンドを使ってください(ステップ2参照)。

dhclientによるDHCP通信シーケンス(DISCOVER→OFFER→REQUEST→ACK)

ステップ1完了の確認: ip addr show eth0 で新しいIPアドレスが表示されることを確認してください。


ステップ2: nmcliコマンドを使う方法(推奨)

nmcliはNetworkManagerのCLIツールで、CentOS 7以降・RHEL 7以降・Ubuntu 16.04以降で標準的に使用されています。NetworkManagerが動いている環境では、こちらの方法が推奨されます。

NetworkManagerが動作しているか確認

systemctl status NetworkManager

active (running) と表示されていればNetworkManagerが稼働しています。

nmcliで接続をダウン・アップ

# 現在の接続一覧を確認
nmcli connection show

# 接続名(NAME列)を確認してから実行
# 例: 接続名が "ens33" の場合
sudo nmcli connection down ens33
sudo nmcli connection up ens33

実行例:

$ nmcli connection show
NAME    UUID                                  TYPE      DEVICE
ens33   a1b2c3d4-e5f6-7890-abcd-ef1234567890  ethernet  ens33

$ sudo nmcli connection down ens33
Connection 'ens33' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)

$ sudo nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

DHCPリースを明示的に更新

接続を切断せずにDHCPリースだけを更新したい場合は以下のコマンドを使います。

# IPv4のDHCPリースを更新
sudo nmcli dev reapply ens33

# または dhcp4 のみを更新
sudo nmcli connection modify ens33 ipv4.method auto
sudo nmcli connection up ens33

インターフェース名ではなくデバイス名で操作する場合

# デバイス一覧を確認
nmcli device status

# デバイスをダウン・アップ
sudo nmcli device disconnect ens33
sudo nmcli device connect ens33

よくあるミス: nmcli connection down の後にすぐ nmcli connection up しても変わらない場合 → NetworkManagerがDHCPリースをキャッシュしている可能性があります。/var/lib/NetworkManager/ 配下のリースファイルを削除してから再実行してください。

nmcliとNetworkManagerの通信フロー(D-Bus経由でネットワークインターフェースを制御)

ステップ2完了の確認: ip addr show ens33 または nmcli connection show ens33 で新しいIPアドレスが割り当てられていることを確認してください。


ステップ3: systemctlでNetworkManagerを再起動する方法

全てのインターフェースを一括でリセットしたい場合、NetworkManagerサービスを再起動します。ただし、再起動中は一時的にネットワーク接続が切断されるため、リモートSSH接続中の場合は注意が必要です。

# NetworkManagerを再起動
sudo systemctl restart NetworkManager

# 再起動後にステータスを確認
systemctl status NetworkManager

実行例:

$ sudo systemctl restart NetworkManager
$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2026-03-02 12:00:00 JST; 3s ago

CentOS 6 / SysVinit環境の場合

CentOS 6以前のようにsystemdを使わない環境では、以下のコマンドを使います。

# CentOS 6 / RHEL 6
sudo service network restart

# または
sudo /etc/init.d/network restart

注意: service network restart はNetworkManagerを使わず、ネットワークスクリプト(/etc/sysconfig/network-scripts/)に基づいてインターフェースを再起動します。NetworkManagerと混在している場合は競合が起きることがあります。

ステップ3完了の確認: ip addr show で各インターフェースに新しいIPが割り当てられていることを確認してください。


ステップ4: ifup / ifdownコマンドを使う方法

ifupifdownは主にDebian/Ubuntu系で使用されるコマンドで、/etc/network/interfacesの設定に基づいてインターフェースを制御します。

Debian/Ubuntu系での実行

# インターフェースをダウン
sudo ifdown eth0

# インターフェースをアップ(DHCPで再取得)
sudo ifup eth0

/etc/network/interfaces の設定確認:

# DHCPで設定されているか確認
cat /etc/network/interfaces

以下のような設定になっていればDHCPが使われています:

auto eth0
iface eth0 inet dhcp

CentOS/RHEL系での ifup / ifdown

CentOS/RHEL系でもifupifdownコマンドは利用可能ですが、内部的にはnetwork-scriptsを呼び出しています。

# CentOS/RHEL系
sudo ifdown eth0
sudo ifup eth0

よくあるミス: Ubuntu 18.04以降でNetworkManagerが有効な場合、ifup/ifdown/etc/network/interfacesの設定を読まないことがあります。その場合はnmcliを使ってください。

ステップ4完了の確認: ip addr show でIPアドレスが更新されているか確認してください。


ステップ5: ip linkコマンドを使う方法

ipコマンド(iproute2パッケージ)を使ってインターフェースレベルで制御する方法です。dhclientと組み合わせて使います。

# インターフェースをダウン
sudo ip link set eth0 down

# インターフェースをアップ
sudo ip link set eth0 up

# DHCP再取得(dhclientを使う場合)
sudo dhclient eth0

dhcpクライアントがsystemd-networkdの場合は以下を使います:

# systemd-networkdの場合
sudo networkctl renew ens33

networkctlの実行例:

$ sudo networkctl renew ens33
Successfully renewed link ens33

ステップ5完了の確認: ip addr show ens33 で新しいIPが割り当てられているか確認してください。


ディストリビューション別の対処法一覧

環境ごとに推奨コマンドをまとめました。

ディストリビューション ネットワーク管理方式 推奨コマンド
CentOS 6 / RHEL 6 SysVinit + network-scripts service network restart または dhclient -r && dhclient
CentOS 7 / RHEL 7 NetworkManager + systemd nmcli connection down/up <NIC名>
CentOS 8 / RHEL 8/9 NetworkManager + systemd nmcli connection down/up <NIC名>
CentOS Stream 9 NetworkManager + systemd nmcli connection down/up <NIC名>
Ubuntu 16.04以前 ifupdown ifdown eth0 && ifup eth0
Ubuntu 18.04〜22.04 NetworkManager または netplan nmcli connection down/up <NIC名>
Ubuntu 24.04 NetworkManager + netplan nmcli connection down/up <NIC名>
Debian 10〜12 NetworkManager または ifupdown nmcli または ifdown/ifup
Arch Linux NetworkManager または systemd-networkd nmcli または networkctl renew

CentOS 7/8でのインターフェース名の確認方法

# インターフェース一覧(IPアドレスも表示)
ip addr show

# または
nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens33   ethernet  connected  ens33
lo      loopback  unmanaged  --

Ubuntu/Debianでの接続名の確認方法

nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0

トラブルシュート

DHCPの再取得でよく遭遇する問題と解決策をまとめました。

症状 原因 解決策
dhclient: command not found dhclientがインストールされていない yum install dhclient または apt install isc-dhcp-client でインストール
IPアドレスが変わらない DHCPサーバが同じIPをリース中 DHCPサーバ側でリース情報を削除するか、MACアドレスを変えてみる
nmcli: command not found NetworkManagerがインストールされていない yum install NetworkManager または apt install network-manager
インターフェースがダウンしたまま戻らない NetworkManagerが管理していないインターフェース sudo ip link set eth0 up で手動でアップ
SSHが切断される ネットワーク再起動中に接続が切れた ローカルコンソールから操作するか、nohupscreenを使う
RTNETLINK answers: Operation not permitted sudo権限なしで実行している コマンドの前にsudoを付ける

DHCPリースファイルのリセット

同じIPが繰り返し払い出される場合、DHCPクライアントのリースファイルをクリアすることで強制的に新しいIPを要求できます。

# dhclientのリースファイルを確認・削除(CentOS/RHEL系)
ls /var/lib/dhclient/
sudo rm /var/lib/dhclient/dhclient.leases

# dhclientのリースファイルを確認・削除(Ubuntu/Debian系)
ls /var/lib/dhcp/
sudo rm /var/lib/dhcp/dhclient.*.leases

# NetworkManagerのリースファイルを削除
ls /var/lib/NetworkManager/
sudo rm /var/lib/NetworkManager/internal-*.lease 2>/dev/null || sudo rm /var/lib/NetworkManager/*.lease 2>/dev/null

# その後、NetworkManagerを再起動
sudo systemctl restart NetworkManager

まとめ

LinuxでDHCPのIPアドレスを再取得する方法を、環境別にまとめました。

  • dhclient: 古いCentOS/RHELや最小インストール環境で有効。dhclient -r で解放、dhclient eth0 で再取得。
  • nmcli: NetworkManagerが動いているCentOS 7以降・Ubuntu全般に対応。nmcli connection down/up で確実に再取得できる。
  • systemctl restart NetworkManager: 全インターフェースをまとめてリセットしたいときに使用。SSH接続中は切断に注意。
  • ifup/ifdown: Debian/Ubuntu系の伝統的な方法。/etc/network/interfaces の設定に従って動作。
  • networkctl renew: systemd-networkdを使っている環境での推奨方法。

2026年現在、主流のCentOS Stream・RHEL・UbuntuではいずれもNetworkManagerによる管理が標準です。まずnmcliで試し、うまくいかない場合にdhclientやsystemctlでの再起動を試みるのが効率的なアプローチです。

インターフェース名の確認(ip addr shownmcli device status)を必ず最初に行い、正しいデバイス名を使ってコマンドを実行してください。


関連記事

CentOSCentOS,dhclient,DHCP

Posted by GENDOSU