テストのために、GCC 7の下にFedora 26をインストールしました。 F26は64ビットVirtualBox VMにインストールされます。インストール後にシステムを構成するために、次のコマンドを実行して再起動しました。
localhost:~$ sudo hostnamectl set-chassis desktop
localhost:~$ sudo hostnamectl set-deployment production
localhost:~$ sudo hostnamectl set-hostname --static --transient --pretty asus-f26-x64.
ログイン後のホスト名は次のとおりです。
asus-f26-x64:~$ hostname
asus-f26-x64
完全修飾ドメイン名が無視されるようです。完全修飾ドメイン名はドット.
()で終わり、DNSツリーの最上位を表します。スティーブンの記事も見てくださいTCP/IP映像、1巻。
完全修飾ドメイン名をホスト名に設定するには?
関連する問題は、ホストが私のDHCPサーバーに名前を登録しないことです。ホスト名を送信するオプションは表示されません。hostnameclt
マニュアルページ。
コンピュータにはDHCPサーバーの名前は必要ありませんが、FQDNが正しく処理されないため、ホストはそれを認識しないため、DHCP名の問題はFQDNの問題に関連していると推測されます。
コンピュータにホスト名を送信するように指示するにはどうすればよいですか?
以下はから来たものですhostnamectl status
。ドットがきれいな名前の一種の装飾として解釈され、FQDNとして認識されないため、状況は少し悪いです。
$ hostnamectl status
Static hostname: asus-f26-x64
Pretty hostname: asus-f26-x64.
Icon name: computer-desktop
Chassis: desktop
Deployment: production
Machine ID: 3d914cf11226f83093acc
Boot ID: 21fb5dabfd6a0c24ba8f2
Virtualization: oracle
Operating System: Fedora 26 (Workstation Edition)
CPE OS Name: cpe:/o:fedoraproject:fedora:26
Kernel: Linux 4.11.9-300.fc26.x86_64
Architecture: x86-64
答え1
hostnamectl
ソースコードを見るとここhostnamectl
、このset_hostname
機能がこれを実行するために使用されていることがわかります。
そのセクションに関するコメントは次のとおりです(強調)。
これで良いホスト名が設定されているので、パラメータをクリーンアップしてそれを静的ホスト名として使用します。これは、ホスト名がすでに静的ホスト名として有効な場合にのみ機能します。末尾のポイントを切り取ります。もしそうなら。うまくいかない場合は、切り取り、複数の点を削除し、奇妙な文字を削除して完全に有効にします。きれいな名前も設定する必要がある場合にのみ名前をクリーンアップします。きれいな名前が設定されていない場合は、自分が何をしているのかを知っていると仮定し、名前をそのまま渡します。
実は確認してみるとmethod_set_static_hostname
ここ、静的ホスト名を設定しようとすると、関連部分は次のようになります。
if (!hostname_is_valid(name, false))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid static hostname '%s'", name);
この関数の関数署名はhostname_is_valid
次のとおりです。
bool hostname_is_valid(const char *s, bool allow_trailing_dot) _pure_;
その後、false引数でhostname_is_valid
呼び出されることがわかります。したがって、systemd と hostnamectl は、静的ホスト名に末尾のポイントを許可しません。allow_trailing_dot
編集:まあ、この問題に関する体系的な議論を見つけることができますここ。 AFAIK、これは「予想通りに」働きます。末尾の点はオプションです。長所と短所がありますが、ここでは扱いません。
したがって、systemd hostnamectlツールを介してこれを行うことはできません。
ただし、いつでもファイルに末尾の点を追加でき/etc/hostname
ますhostnamectl
。
もちろん、hostnamectl
後でいつでも別のツールを使用してホスト名を設定すると、そのホスト名が上書きされます。
答え2
このようなツールは(印刷された)末尾の点をほとんど使用しません(許可されていても)。
完全修飾名を取得するには、次のように印刷する必要があります。
$ hostname -f
asus-f26-x64.example.com
/etc/resolv.conf
ドメイン名の行を持つには、次のものを作成する必要があります(またはFedoraでこれと同等のもの)。
domain example.com.
しかし、FQDNは単にFQDNになることはできないことを理解してください。一つブランド:
asus-f26-x64
これはコンピュータ名、ラベルです。ただし、ドメインになるには別のラベル(またはラベル、ドットで囲まれたテキスト)が必要です(例:)。インターネットには独自のリストがあるのでインターネットトップレベルドメイン名これも追加する必要があります。したがって、FQDNは次のようになります。
asus-f26-x64.company.domain.net.