Я как-то удалил /etc/hosts
в моей тестовой системе - Debian Sid. Теперь я хочу установить по умолчанию /etc/hosts
. Я попытался dpkg -S /etc/hosts
чтобы узнать, какой пакет содержит /etc/hosts
, но ничего не найдено. Где его скачать?
В /etc/hosts
файл записан через debian-installer
, он не существует в виде упакованного файла.
Следующее - мой /etc/hosts
из установки по умолчанию:
127.0.0.1 localhost
127.0.1.1 hostname.fqdn.example.com hostname
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Дополнительные сведения о синтаксисе см. В разделе «Справочник по Debian». Разрешение имени хоста.
Обновить:
Поскольку я чувствую, что этот ответ получил больше голосов, чем я ожидал, в ответ я немного поработал для вас. :)
Фактический пакет, используемый debian-installer
, который содержит /etc/hosts
логика, называется net-cfg
. В частности, два файла, netcfg.h
и netcfg-common.c
справиться с логикой построения /etc/hosts
файл.
netcfg.h
имеет #define
s как для самого файла, так и для записей IPv6:
#define HOSTS_FILE "/etc/hosts"
...<snip>...
#define IPV6_HOSTS \
"# The following lines are desirable for IPv6 capable hosts\n" \
"::1 ip6-localhost ip6-loopback\n" \
"fe00::0 ip6-localnet\n" \
"ff00::0 ip6-mcastprefix\n" \
"ff02::1 ip6-allnodes\n" \
"ff02::2 ip6-allrouters\n"
netcfg-common.c
содержит грязную работу, заполняя информацию в /etc/hosts
:
if ((fp = file_open(HOSTS_FILE, "w"))) {
char ptr1[INET_ADDRSTRLEN];
fprintf(fp, "127.0.0.1\tlocalhost");
if (ipaddress.s_addr) {
inet_ntop (AF_INET, &ipaddress, ptr1, sizeof(ptr1));
if (domain_nodot && !empty_str(domain_nodot))
fprintf(fp, "\n%s\t%s.%s\t%s\n", ptr1, hostname, domain_nodot, hostname);
else
fprintf(fp, "\n%s\t%s\n", ptr1, hostname);
} else {
#if defined(__linux__) || defined(__GNU__)
if (domain_nodot && !empty_str(domain_nodot))
fprintf(fp, "\n127.0.1.1\t%s.%s\t%s\n", hostname, domain_nodot, hostname);
else
fprintf(fp, "\n127.0.1.1\t%s\n", hostname);
#else
fprintf(fp, "\t%s\n", hostname);
#endif
}
fprintf(fp, "\n" IPV6_HOSTS);
fclose(fp);
}
Не отмечен в Debian, но должен быть
::1 localhost localhost.my.domain 127.0.0.1 localhost localhost.my.domain
(если вы не используете IPv6, вы можете игнорировать строку, начинающуюся с :: 1)
Изменить: файл, вероятно, является базовой установкой, а не из дополнительного пакета.