Làm cách nào để đặt địa chỉ máy chủ tên vĩnh viễn trong /etc/resolv.conf?


14

Tôi không thể giữ lại địa chỉ máy chủ tên mà tôi đã đặt qua /etc/resolv.conf. Mỗi lần tôi đặt giá trị, trình quản lý mạng sẽ ghi đè lên nó bằng cổng mặc định khi khởi động lại.

Làm thế nào để thiết lập nó đúng?

Tôi muốn một cách khác hơn là thay đổi máy chủ tên trong bộ định tuyến.


Bạn cần thay đổi nó với NetworkManager(giống như được nêu trên dòng đầu tiên). Tập tin này được tạo lại trên mỗi lần khởi động bởi NetworkManager. Nó phụ thuộc vào bản phân phối linux của bạn (mà bạn không đề cập đến) làm thế nào để truy cập cái này NetworkManager.
Rik

Câu trả lời:


13

Nó phụ thuộc. Xin vui lòng đọc đến cuối.

Nếu bạn chưa cài đặt gói độ phân giải , thì thật dễ dàng: sau khi thay đổi nó theo cách bạn muốn, hãy đưa ra lệnh

 sudo chattr +i /etc/resolv.conf

Lệnh thay đổi các thuộc tính tệp, làm cho nó immutable(tùy chọn + i).

Tuy nhiên, nếu bạn đã cài đặt gói độ phân giải gói, tệp /etc/resolv.conf có thể được chuyển đổi thành một liên kết tượng trưng,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

đó là một tập tin trên một hệ thống tập tin ảo, bản tóm tắt của một phiên bản không cố định. Điều buồn cười là bạn có thể không biết mình đã cài đặt độ phân giải, bởi vì các phiên bản gần đây của các hệ điều hành giống như Debian đi kèm với nó được cài đặt sẵn. Bạn có thể thiết lập xem distro của bạn đã cài đặt nó cho bạn hay chưa bằng cách ban hành lệnh:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Thậm chí quan trọng nhất, bạn có thể thiết lập xem liệu bạn /etc/resolv.confđã được chuyển đổi thành một liên kết bằng lệnh (file /etc/resolv.conf) ở trên chưa. Nếu câu trả lời là ASCII text, hãy sử dụng chattr, nếu không ...

Nếu bạn sử dụng IP tĩnh, điều đơn giản nhất là thêm dòng sau (hoặc một số thứ như vậy)

 dns-nameservers 8.8.4.4 8.8.8.8

đến khổ thơ xác định các thuộc tính của giao diện tĩnh của bạn trong / etc / mạng / giao diện.

Thay vào đó, nếu bạn đang ở trên một máy tính xách tay kết nối mọi lúc với các mạng khác nhau, bạn có thể làm theo LawrenceCgợi ý tuyệt vời của mình. Nhưng, nếu bạn có độ phân giải trên hệ thống của mình, cách chính xác (và đơn giản nhất) để cung cấp cho một bộ DNS cố định là sử dụng các tệp trong /etc/resolvconf/resolv.conf.d . Cụ thể, các tệp sau được sử dụng (xem trang của Stephane Graber ):

cơ sở : Được sử dụng khi không tìm thấy dữ liệu nào khác

head : Được sử dụng cho tiêu đề của decv.conf, có thể được sử dụng để đảm bảo máy chủ DNS luôn là máy chủ đầu tiên trong danh sách

đuôi : Bất kỳ mục nhập nào trong đuôi được nối vào cuối độ phân giải kết quả.

Vì vậy, đặt bạn yêu thích máy chủ tên trong đầu , như sau

  nameserver 8.8.8.8

và bạn đã hoàn thành.


2
@dhiller Ultrasawblade đổi tên thành LawrenceC, đó là tên dưới đây.
MariusMatutiae

Bài đăng rất hay và thú vị, tôi muốn bạn thêm một số liên kết tài liệu về chủ đề này cho người dùng muốn biết thêm về chủ đề này, Thx
Philippe Gachoud

/etc/resolvconf/không tồn tại theo mặc định trên Ubuntu 18.04.
Dan Dascalescu

9

Thêm một dòng tương tự để /etc/dhcp/dhclient.confsử dụng một thiết bị đầu cuối gốc:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Điều này gây ra dhclient, chương trình đưa ra yêu cầu DHCP và thực hiện thay đổi theo những gì phản hồi đã nói với nó, để thay thế thông tin nhận được từ máy chủ DHCP bằng cách trên trước khi thực hiện thay đổi.

Trên đây là hai máy chủ DNS OpenNIC. Thay thế khi cần thiết cho bất kỳ máy chủ nào bạn muốn sử dụng.

Vì điều này xảy ra bất cứ khi nào bạn nhận được thông tin cấu hình từ DHCP, vì vậy hãy sử dụng dhclient -v eth0hoặc bất kỳ giao diện nào để làm mới nó và xem sự thay đổi.


1
Thay vì chỉ ghi đè DNS (thường là bộ định tuyến), người ta có thể thêm dòng prepend domain-name-servers 8.8.8.8chẳng hạn. Điều này sẽ sử dụng DNS của ISP khi có sẵn.
Axel Latvala

3

Có vẻ như @Rik đã đề cập rằng lý do thay thế DNS khi khởi động lại là do trình quản lý / tiện ích mạng được đặt như vậy. Trong Linux Mint, theo ảnh chụp màn hình, tôi chỉ cài đặt phương thức IPv4 thành địa chỉ Tự động (DHCP). Sau đó, bạn có thể nhập các cài đặt chính xác trong /etc/resolv.conf hoặc tại phần máy chủ DNS. Tôi nhớ trong Ubuntu 13.04, các máy chủ tên của tôi đã thay đổi một vài lần trong một khoảng thời gian dài, nhưng sau khi tôi thực sự đi và chỉnh sửa chúng trong GUI, tất cả dường như ổn định từ đó trở đi.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây


3

Có cùng một vấn đề, nhưng tôi sử dụng địa chỉ IP tĩnh. Cách khắc phục chỉ là thêm dns trong / etc / network / interface

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]

Có, nó sửa nó vì NetworkManager bỏ qua các giao diện được liệt kê trong /etc/network/interfaces. Nắm bắt tốt!
Izzy

1

Nếu bạn đã sử dụng wicd, nhấp chuột phải vào biểu tượng và nhấp vào thông tin kết nối. Khi cửa sổ mở ra, nhấp vào thuộc tính của cái bạn được kết nối.

Kiểm tra sử dụng DNS tĩnh và trong dòng cho biết máy chủ DNS loại 1 trong IP cho Google DNS 8.8.8.8và trong dòng cho máy chủ DNS loại 2, 8.8.4.4sau đó nhấp vào "ok".

Nếu bạn nhận được lỗi từ mặc định, bạn có thể liên hệ với ISP của bạn và đề cập với họ. Họ thường chỉ định máy chủ DNS cho modem của bạn khi bạn kết nối với chúng.


0

Tấn công theo cách của bạn bằng chattr +ihoặc tương tự là cách giải quyết nhanh nhất và nên tránh bất cứ khi nào có thể (ít nhất là về lâu dài - như đã nói, đó là một công việc ngắn hạn cho đến khi tìm thấy thời gian cho giải pháp thực sự) . Như đã chỉ ra, đây là một công việc cho NetworkManager, cung cấp CLI mà chúng ta có thể sử dụng cho điều đó:

# tìm giao diện nào để điều chỉnh
thiết bị nmcli
# đầu ra trông như:
# KẾT NỐI THIẾT BỊ NHÀ NƯỚC
# enp0s3 ethernet kết nối văn phòng của tôi
# lo loopback không được quản lý -
# Từ đó, chúng ta cần KẾT NỐI.

# Bây giờ thêm "miền tìm kiếm" của chúng tôi:
kết nối nmcli sửa đổi ipv4.dns-search example1.com của tôi
nmcli con mod my-office + ipv4.dns-search example2.com

# Và máy chủ tên của chúng tôi:
nmcli con sửa đổi ipv4.dns văn phòng của tôi 213.73.91.35
nmcli con sửa đổi văn phòng của tôi + ipv4.dns 87.118.100.175
# lưu ý "+" trong dòng thứ hai: thêm một dòng khác,
# trong khi dòng đầu tiên ghi đè lên mục hiện có.
# chúng tôi có thể thực hiện điều đó với một cuộc gọi duy nhất:
nmcli con sửa đổi ipv4.dns văn phòng của tôi "213.73.91.35 87.118.100.175"

# OK, vì vậy bây giờ hãy bảo nó bỏ qua các bản cập nhật từ máy chủ DHCP:
nmcli con sửa đổi ipv4.ignore-auto-dns của tôi

# và áp dụng các sửa đổi cho cấu hình đang chạy của chúng tôi
nmcli con lên văn phòng của tôi

Nếu bạn sử dụng một địa chỉ IP tĩnh, bạn cũng có thể sử dụng giải pháp từ câu trả lời của kanelbolle .


0

Thật đáng ngạc nhiên khi vấn đề nhỏ này có thể gây ra, khi các giải pháp được đưa ra cho nó không còn hoạt động trên Ubunutu 18.04.

Điều làm việc cho tôi là chỉ đơn giản ghi đè lên nameservergiá trị trong /etc/resolv.confmỗi lần khởi động. sudochỉnh sửa /etc/rc.localvà thêm dòng này:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
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.