Tập tin Hostaliases có địa chỉ IP


8

Biến HOSTALIASESmôi trường cho phép người dùng đặt bí danh máy chủ của riêng họ thay vì phải sudoedit /etc/hosts(chi tiết hơn, ví dụ: tại http://blog.tremily.us/posts/HOSTALIASES/ )

Tuy nhiên, với /etc/hoststôi có thể bí danh địa chỉ IP thành tên và tên thành tên, trong khi HOSTALIASESdường như chỉ hoạt động với tên để đặt tên bí danh.

Tôi đã thử:

cat > .hosts
work 10.10.0.1
g www.google.com
^D
export HOSTALIASES=$PWD/.hosts

và bây giờ

curl g #works 
curl 10.10.0.1 #works
curl work #doesn't work

Tôi có thể thực hiện curl workcông việc mà không cần chỉnh sửa tệp mà tôi không có quyền ghi vào ( /etc/hosts) không?


Nó làm việc cho tôi. Làm thế nào để nó nói với curl -v workgetent hosts work?
yaegashi

$? == 6: ... không thể giải quyết máy chủ 'công việc' ... VÀ $? == 2: <không có đầu ra>. getent hosts gđược tôi $? == 0: 2a00: 1450: 400c: c05 :: 67 www.google.com
PSkocik

Hiểu rồi. Tôi đang sử dụng máy tính để bàn Gnome và sử dụng NetworkManager và dnsmasq. Nó trả về 10.10.0.1một truy vấn bản ghi cho tên miền 10.10.0.1., như thể inet_aton()được áp dụng. BIND trả về NXDOMAIN cho các truy vấn đó. Bạn có thể thấy nó bằng cáchhost 10.10.0.1. <nameserver address>
yaegashi

Vì vậy, tôi cho rằng nó coi chuỗi bí danh 10.10.0.1là một tên miền như hiện tại, chỉ đơn giản là truy vấn các mô đun trình phân giải libnss với nó.
yaegashi

1
Btw bạn có thể sử dụng một dịch vụ công cộng như xip.io để lấy địa chỉ IPv4 tùy ý bằng tên miền : work 10.10.0.1.xip.io.
yaegashi

Câu trả lời:


12

HOSTALIASEStính năng được cung cấp bởi chức năng phân giải gethostbyname()trong glibc. Trong chức năng này làm bí nhìn lên kết quả được thông qua như là-là để gọi mô-đun libnss tiếp theo theo quy định của hosts:trong /etc/nsswitch.conf, do đó nếu không có mô-đun có thể xử lý nó, gethostbyname()sẽ kết thúc với thất bại.

Lưu ý rằng trong hầu hết các chương trình, ký hiệu địa chỉ số thích 10.10.0.12a00:1450:400c:c05::67được xử lý inet_aton() inet_pton() getaddrinfo()trước đó gethostbyname()được gọi.

Một số máy chủ DNS, bao gồm dnsmasq, trả về các bản ghi địa chỉ hợp lệ cho các truy vấn có chuỗi địa chỉ số như thể inet_aton()được áp dụng cho nó: ví dụ: chúng trả về một bản ghi 10.10.0.1để truy vấn FQDN 10.10.0.1.. Tuy nhiên, các máy chủ khác bao gồm BIND chỉ trả về NXDOMAIN cho các truy vấn đó. Vì vậy, bạn không thể dựa vào điều này để xác định work 10.10.0.1trong HOSTALIASESthay thế của bạn /etc/hosts.

Một cách giải quyết khác có thể là sử dụng dịch vụ DNS công cộng như xip.io để nhận các FQDN có thể phân giải cho các địa chỉ IPv4 tùy ý. Ví dụ, bạn có thể định nghĩa workcho 10.10.0.1như thế này:

work 10.10.0.1.xip.io

Cảm ơn. Tôi đã cài đặt và bắt đầu dnsmasq và dòng ip trong tệp HOSTALIASES hoạt động ngay bây giờ.
PSkocik
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.