Skip to content

Instantly share code, notes, and snippets.

@TakashiSasaki
Created October 29, 2024 23:55
Show Gist options
  • Save TakashiSasaki/b68bf6e8fe7248fc328b84575e6c17ea to your computer and use it in GitHub Desktop.
Save TakashiSasaki/b68bf6e8fe7248fc328b84575e6c17ea to your computer and use it in GitHub Desktop.
OpenWrtルータにおけるホスト名設定と取得方法

OpenWrtルータにおけるホスト名設定の確認と取得方法

OpenWrtなどの組み込みLinux環境では、設定管理ツールとしてuci(Unified Configuration Interface)がよく使用されます。uciはシステム設定の管理と読み出しを簡略化するためのコマンドで、設定は通常/etc/configディレクトリ内に保存されています。各ファイルは個別の設定カテゴリに対応しており、ネットワーク設定は/etc/config/network、システム設定は/etc/config/systemに記録されています。

ホスト名の設定項目

OpenWrtルータのホスト名は、通常/etc/config/systemファイルに以下のように設定されます。

config system
    option hostname 'GL-A1300'

この設定により、ルータの全体的なホスト名がGL-A1300に設定されます。また、インターフェースごとに異なるホスト名を設定する場合は、/etc/config/networkファイル内で以下のように記述します。

config interface 'lan'
    option hostname 'GL-MT1300-fd6'

config interface 'wan'
    option hostname 'GL-MT1300-fd6'

ホスト名の確認方法

ホスト名を確認する方法として、一般的なLinuxコマンドであるhostnameがOpenWrt環境に存在しない場合が多いため、以下の代替コマンドが使用されます。

  1. uname -n
    unameコマンドはシステム情報を表示するコマンドで、-nオプションでホスト名を取得します。

    uname -n
  2. cat /proc/sys/kernel/hostname
    /proc/sys/kernel/hostname ファイルには現在のホスト名が保存されています。catコマンドを使用して内容を表示することでホスト名が確認できます。

    cat /proc/sys/kernel/hostname
  3. uci getコマンド
    uciを使用して、設定されているホスト名を直接取得することもできます。

    uci get system.@system[0].hostname

gethostnameシステムコールについて

多くのLinuxディストリビューションに含まれるhostnameコマンドやuname -nは、内部でgethostnameシステムコールを使用してホスト名を取得しています。gethostnameは、システムのカーネルが保持している現在のホスト名を取得するシステムコールであり、以下のプロトタイプを持ちます。

int gethostname(char *name, size_t len);

このシステムコールを呼び出すことで、ホスト名がnameのバッファに格納されます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment