EDIT tháng 6/2016
Tôi đã viết một tập lệnh để cập nhật tất cả các cài đặt cho các kết nối hệ thống trong /etc/Network-Manager/system-connections/
thư mục. GUI mà bạn sử dụng để chỉnh sửa các kết nối riêng lẻ, chỉnh sửa một tệp cụ thể trong thư mục đó. Kịch bản cập nhật tất cả các tệp - nó chỉ tìm kiếm những người không đặt dns với grep và đặt nó với awk.
Vì việc truy cập các tệp đó yêu cầu sudo
quyền truy cập, hãy chạy tập lệnh này sudo
và sau đó - khởi động lại trình quản lý mạng
#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script
set -x
for file in /etc/NetworkManager/system-connections/* ; do
grep 'dns=208.67.220.220;' "$file" || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done
Kịch bản hoạt động:
POST GỐC
Một số người dùng ở đây đã chỉ ra rằng DNS được kiểm soát bằng cách nào đó dnsmasq
. Điều đó thực sự đúng. Tôi đã phải đối mặt với một vấn đề hơi nhỏ hơn, nơi không có vấn đề làm thế nào tôi thay đổi head
hoặc body
trong /etc/resolvconf/resolv.conf.d
, máy tính của tôi có thể không thực sự truy cập thực tập nội trú theo tên miền - chỉ làm việc với các địa chỉ IP.
Những gì tôi đã làm là chỉnh sửa các /etc/NetworkManager/NetworkManager.conf
tập tin. Ban đầu, nó nói dns=dnsmasq
nhưng tôi đã đổi nó thành : dns=208.67.222.222
. Mặc dù theo cách này, nm-tool
không đề cập đến 208.67.222.222, tôi vẫn có thể sử dụng tên miền, không chỉ địa chỉ IP.
Đây là cách NetworkManager.conf
tập tin của tôi bây giờ:
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222
[ifupdown]
managed=false
LƯU Ý: Để biết thêm chi tiết về vấn đề của tôi và giải pháp này, hãy tham khảo bài đăng của tôi trên Askubfox.com .
CẬP NHẬT # 1
Sau khi trở về nhà từ trường đại học, tôi phát hiện ra rằng tôi không thể kết nối với WiFi tại nhà. Tôi đã đọc một chút về man NetworkManager.conf
và nó chỉ ra rằng dns=
trong [main]
thực sự là một dòng cho các plug-in, vì vậy dòng dns=dnsmasq
là thực sự thêm plugin dnsmasq cho NetworkManager, rõ ràng.
Vì vậy, giải pháp của tôi vẫn hoạt động, không như tôi mong đợi. Đây là đoạn trích từ trang người đàn ông:
dns=plugin1,plugin2, ... List DNS plugin names separated by ','.
Các plugin DNS được sử dụng để cung cấp chức năng máy chủ lưu trữ bộ nhớ cache cục bộ (giúp tăng tốc truy vấn DNS) và để đẩy dữ liệu DNS đến các ứng dụng sử dụng nó.
Vì vậy, bằng cách thiết lập dns=208.67.222.222
, về cơ bản, tôi có thể ngăn NetworkManager sử dụng plugin đó, nếu không thì sẽ sử dụng máy chủ DNS cục bộ (dường như không hoạt động).