У меня есть сервер в моей сети (мы назовем имя хоста ] server
), и я могу получить доступ к машине в локальной сети, используя имя хоста server.local
, которое разрешается в его локальный адрес (назовем его 192.168.1.50). Большинство устройств общаются с этим компьютером через WiFi, но для повышения производительности я недавно подключил к нему другой компьютер напрямую через кабель Ethernet. IP-адрес сервера на этом интерфейсе - 10.0.0.1, а на машине, которая к нему подключается ( client1
) - 10.0 .0.2. Через некоторое время я заметил, что могу пинговать server.local
из client1
, и вместо этого он разрешал server.local
как 10.0.0.1 из 192.168.1.50.
Это замечательно, потому что это означает, что мне не нужно явно указывать IP-адрес (это хорошо для веб-страниц, которые забывают свое состояние при изменении IP-адреса), но периодически я вижу низкую производительность и при пинге server.local
Я вижу, что он снова переключился на 192.168.1.50. Через некоторое время он снова возвращается к 10.0.0.1.
Как я могу привязать server.local
к разрешению IP-адреса интерфейса Ethernet, по крайней мере, для подключенного компьютера? На данный момент это нормально, если он должен разрешить одно и то же для всех машин в сети, поскольку в настоящее время напрямую подключенный - единственный, кто его использует.
Домен .local
разрешается (преобразуется в IP-адрес) с помощью dnsmasq
(см. man dnsmasq systemd-dnsmasq
), а «local» имеет разные значения в разных системах.
Вместо того, чтобы пытаться обмануть .local
, просто добавьте имена хостов и IP-адреса в / etc / hosts
:
sudoedit /etc/hosts
servereth 10.0.0.1
serverwifi 192.168.1.50
Прочтите man sudoedit hosts
.
Соединение IP-адресов с реальными именами интерфейсов осуществляется с помощью «маршрутизации пакетов», см. man ip-route
, do ip route
, и имейте в виду, что почти все пакеты используют маршрут « по умолчанию
».