จะตั้งชื่อโฮสต์และชื่อโดเมนได้อย่างไร


33

ฉันกำลังเช่าเซิร์ฟเวอร์โดยใช้ Ubuntu 16.04 ที่ บริษัท ลองตั้งชื่อว่า company.org

ปัจจุบันเซิร์ฟเวอร์ของฉันมีการกำหนดค่าเช่นนี้:

  • ชื่อโฮสต์: server737263
  • ชื่อโดเมน: company.org

นี่คือ FQDN ของฉัน:

user@server737263:~ $ hostname --fqdn
server737263.company.org

มันไม่น่าแปลกใจ

ฉันกำลังเช่าชื่อโดเมนdomain.orgด้วย server1.domain.orgสิ่งที่ผมอยากจะทำจะเปลี่ยนชื่อเซิร์ฟเวอร์ของฉันเป็น

ที่นี้หมายถึงการกำหนดค่าชื่อโฮสต์ของฉันเป็นและชื่อโดเมนของฉันเป็นserver1domain.org

ฉันจะทำอย่างถูกต้องได้อย่างไร

แท้จริง manpage ของhostnameยังไม่ชัดเจน อย่างน้อยสำหรับฉัน:

HOSTNAME (1)

[ ... ]

ตั้งชื่อ

  • เมื่อเรียกด้วยอาร์กิวเมนต์เดียวหรือด้วยตัวเลือก --file คำสั่งจะตั้งชื่อโฮสต์หรือชื่อโดเมน NIS / YP ชื่อโฮสต์ใช้ฟังก์ชั่น sethostname (2) ในขณะที่ทั้งสามชื่อโดเมน ypdomainname และ nisdomainname ใช้ setdomainname (2) โปรดทราบว่านี่จะมีผลจนกว่าจะรีบูตครั้งถัดไป แก้ไข / etc / hostname เพื่อการเปลี่ยนแปลงอย่างถาวร

[ ... ]

FQDN

  • คุณไม่สามารถเปลี่ยน FQDN ด้วยชื่อโฮสต์หรือ dnsdomainname

[ ... ]

ดังนั้นดูเหมือนว่าการแก้ไข/etc/hostnameไม่เพียงพอหรือไม่ เพราะถ้ามันเปลี่ยนชื่อโฮสต์จริงๆมันจะเปลี่ยน FQDN นอกจากนี้ยังมีเคล็ดลับที่ฉันอ่านเพื่อเปลี่ยนชื่อโฮสต์ด้วยคำสั่งsysctl kernel.hostname=server1แต่ไม่มีอะไรบอกว่านี่เป็นวิธีที่ถูกต้องหรือเคล็ดลับน่าเกลียด

ดังนั้น:

  1. วิธีที่ถูกต้องในการตั้งชื่อโฮสต์คืออะไร?

  2. วิธีที่ถูกต้องในการตั้งชื่อโดเมนคืออะไร?

คำตอบ:


31

ตั้งค่าชื่อโฮสต์ของคุณ:

  • คุณจะต้องแก้ไข/etc/hostnameด้วยชื่อโฮสต์ใหม่ของคุณ

  • sudo hostname $(cat /etc/hostname)จากนั้นเรียกใช้

ตั้งค่าโดเมนของคุณ:

  • จากนั้นใน/etc/resolvconf/resolv.conf.d/headคุณจะเพิ่มแล้วบรรทัดdomain your.domain.name(ไม่ใช่ FQDN ของคุณเพียงแค่ชื่อโดเมน)

  • จากนั้นเรียกใช้sudo resolvconf -uเพื่ออัปเดตของคุณ/etc/resolv.conf(หรือเพียงแค่สร้างการเปลี่ยนแปลงก่อนหน้านี้เป็นของคุณ/etc/resolv.conf)

ทั้งสอง:

สุดท้ายอัปเดต/etc/hostsไฟล์ของคุณ ควรมีอย่างน้อยหนึ่งบรรทัดที่ขึ้นต้นด้วยหนึ่งใน IP ของคุณ (ลูปแบ็คหรือไม่) FQDN และชื่อโฮสต์ของคุณ การแบ่งที่อยู่ ipv6 ออกไฟล์โฮสต์ของคุณอาจมีลักษณะเช่นนี้

127.0.0.1 localhost
1.2.3.4 service.domain.com service

7
ไฟล์ conf ทั้งคู่บอกDO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTENบนเซิร์ฟเวอร์ของฉัน (เวอร์ชั่นเดียวกัน)
Walf

7
อย่าหลงกลโดยความจริงที่ว่า "ไม่แก้ไข" /etc/resolvconf/resolv.conf.d/headคำเตือนที่ปรากฏใน ทุกสิ่งในไฟล์ส่วนหัวจะถูกต่อท้ายกับ/etc/resolv.confไฟล์เอาต์พุตผลลัพธ์ดังนั้นจึงมีคำเตือนอยู่ที่นั่นเพื่อให้ปรากฏในผลลัพธ์สุดท้าย ขว้างฉันเป็นครั้งแรก
njbair

7
นี้ดูเหมือนจะไม่นำไปใช้กับ 18.04 LTS - ไม่มีไฟล์ดังกล่าวและไม่มีเช่นสาธารณูปโภค/etc/resolvconf/resolv.conf.d/head resolvconf
inopinatus

2
คุณสามารถอัปเดตคำตอบด้วยhostnamectl
แหวนØ

1
โปรดทราบว่าหากคุณใช้ AWS คุณจะต้องเก็บชื่อโฮสต์ไว้หลังจากที่รีบูต - sudo nano /etc/cloud/cloud.cfgอัปเดตpreserve_hostname: true(ค่าเริ่มต้นคือfalse)
bshea

5

sudo nano / etc / hostname

hostname.domain.com

sudo nano / etc / hosts

127.0.0.1   hostname.domain.com hostname localhost

รีบูต!

ต้องมีชื่อโฮสต์หลัง FQDN ในไฟล์ / etc / hosts ทำงานได้ดีบน Ubuntu 18.04.1 และรุ่นอื่น ๆ ทั้งหมด ใน EC2 และที่อื่น ๆ

ไม่ยุ่งกับไฟล์แก้ไขหรืออะไรอย่างอื่น

ที่แสดงชื่อโฮสต์ในเชลล์แล้วมี FQDN เมื่อคุณต้องการ


1

~ $ ชื่อโฮสต์ของผู้ชาย

[…]
       You cannot change the FQDN with hostname or dnsdomainname.

       The  recommended  method  of  setting the FQDN is to make the hostname be an alias for the fully qualified name using /etc/hosts,
       DNS, or NIS. For example, if the hostname was "ursula", one might have a line in /etc/hosts which reads

              127.0.1.1    ursula.example.com ursula

       Technically: The FQDN is the name getaddrinfo(3) returns for the host name returned by gethostname(2).  The DNS  domain  name  is
       the part after the first dot.

       Therefore  it  depends  on the configuration of the resolver (usually in /etc/host.conf) how you can change it. Usually the hosts
       file is parsed before DNS or NIS, so it is most common to change the FQDN in /etc/hosts.

       If a machine has multiple network interfaces/addresses or is used in a mobile environment,  then  it  may  either  have  multiple
       FQDNs/domain  names  or  none at all. Therefore avoid using hostname --fqdn, hostname --domain and dnsdomainname.  hostname --ip-
       address is subject to the same limitations so it should be avoided as well.

[…]

สิ่งนี้ชี้ให้เห็นอย่างชัดเจนโดยpoigeในอีกหัวข้อหนึ่งและเป็นสิ่งที่ Lutz เสนอตรงนี้

คุณไม่ควรใส่ FQDN /etc/hostnameของคุณลงใน


1

คำแนะนำที่เขียนกับ Ubuntu 18.04.3 LTS (ไบโอนิค)

เปลี่ยนชื่อโฮสต์:

sudo hostnamectl set-hostname server1

ตรวจสอบผลการทำงานhostnamectl:

root@www:/# hostnamectl
   Static hostname: server1       <-- Check this value
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 202c4264b06d49e48cfe72599781a798
           Boot ID: 43654fe8bdbf4387a0013ab30a155872
    Virtualization: xen
  Operating System: Ubuntu 18.04.3 LTS
            Kernel: Linux 4.15.0-65-generic
      Architecture: x86-64

เปลี่ยนโดเมนผ่านตัวจัดการเครือข่ายใหม่Netplanโดยแก้ไข/etc/netplan/01-netcfg.yamlและเปลี่ยนsearchพารามิเตอร์:

sudoedit /etc/netplan/01-netcfg.yaml

ตัวอย่างการกำหนดค่า:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      nameservers:
          search: [ domain.org ]

ทดสอบการเปลี่ยนแปลงโดยการเข้าสู่ระบบในครั้งที่สองและทำงานsudo netplan tryในหนึ่งในเซสชันและตรวจสอบการตั้งค่าในอื่น ๆ :

# netplan try
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in  97 seconds
Configuration accepted.
# systemd-resolve --status
...
Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 8.8.8.8
                      8.8.4.4
          DNS Domain: domain.org      <-- Check this value
# cat /etc/resolv.conf
...
nameserver 127.0.0.53
options edns0
search domain.org    <-- Check this value
# hostname -f
server1.domain.org

ทุกsudo netplan tryอย่างเรียบร้อยดีกด ENTER ที่พรอมต์เพื่อทำสิ่งต่าง ๆ อย่างถาวร


0

ฉันพยายามเปลี่ยนรายการโดเมนจากmyhome.localเป็นmyhome.lan ฉันต้องแก้ไข/etc/hostsไฟล์และ/etc/network/interfacesไฟล์ /etc/hostsตอนนี้ไฟล์ของฉันดูเหมือนว่า:

127.0.0.1   localhost
192.168.3.2 server.myhome.lan   server

และ/etc/network/interfacesตอนนี้ไฟล์ของฉันดูเหมือนว่า:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp2s0
iface enp2s0 inet static
    address 192.168.3.2
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.3.255
    gateway 192.168.3.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.3.1
    dns-search myhome.lan

มันใช้งานได้ดีสำหรับฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.