Mạng chỉ sử dụng một DNS khi được kết nối với VPN


9

Công ty của tôi có VPN mà tôi cần kết nối. Trong OSX, tôi thực hiện điều này bằng cách sử dụng openvpnvới cấu hình sau:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

Trong Ubuntu, tôi đã cài đặt network-manager-openvpnvà thêm kết nối VPN mới (cố gắng nhập tệp cấu hình gây ra sự cố) với cùng tùy chọn cấu hình được đặt: Ảnh chụp màn hình cài đặt của tôi

Khi tôi kết nối với VPN, tôi không thể giải quyết bất kỳ tên miền nào.

Nếu tôi chỉnh sửa /etc/NetworkManager/NetworkManager.conf, nhận xét dòng dns=dnsmasqvà khởi động lại network-manager, tôi có thể giải quyết các tên miền nội bộ từ công ty của mình, nhưng các tên miền khác như google.com sẽ không giải quyết được gì cả. Tôi đã đảm bảo đặt "Phương thức" thành "Chỉ địa chỉ tự động (VPN)" trong tab IPv4 và IPv6 của trình quản lý mạng cho kết nối VPN của mình, nhưng dường như không có sự khác biệt nào.

Tôi cũng đã thử bật lại dnsmasqvà sửa đổi /etc/resolvconf/resolv.conf.d/base để chứa nameserver 127.0.1.1, sau đó chạy sudo resolveconf -u, nhưng sau đó không có tên miền nào sẽ giải quyết lại.

Điều tôi muốn là có thể kết nối với VPN của mình để các tên miền được đẩy bởi máy chủ DNS của công ty tôi được giải quyết theo cách đó và tất cả các tên miền khác được giải quyết bình thường.

EDIT: Hóa ra dnsmasq chưa thực sự được cài đặt, mà tôi nghĩ nó sẽ được mặc định. Tuy nhiên, nếu tôi cài đặt nó, kích hoạt lại /etc/NetworkManager/NetworkManager.conf, thêm địa chỉ máy chủ tên cục bộ vào /etc/resolvconf/resolv.conf.d/base, khởi động lại tất cả các dịch vụ và kết nối với VPN, tôi có thể giải quyết các tên miền từ DNS của công ty, nhưng tôi không thể giải quyết bất kỳ tên miền nào khác. Về cơ bản, tình huống tương tự như khi tôi vô hiệu hóa hoàn toàn dnsmasq.

EDIT: Nội dung của /etc/dnsmasq.conf: http://paste.ubfox.com/7297231/


Bạn có thể chỉ cho chúng tôi cài đặt dnsmasq của bạn? Dnsmasq thường lấy các máy chủ DNS ngược dòng của nó từ /etc/resolv.conf, vì vậy nếu bạn không thay đổi thì có lẽ bạn chỉ kéo DNS qua VPN.
jkt123

Chắc chắn rồi. Tôi đã thêm một liên kết đến của tôi/etc/dnsmasq.conf
Tommy Brunn

Câu trả lời:


4

Từ cấu hình của bạn, cài đặt dnsmasq của bạn sẽ nhận được danh sách các máy chủ DNS sẽ sử dụng /etc/resolv.conf. Theo mặc định, dnsmasq cố gắng ưu tiên sử dụng các máy chủ DNS đang hoạt động, nhưng sẽ chỉ gửi một yêu cầu nhất định đến một máy chủ DNS duy nhất. Điều này có thể gây ra sự cố nếu bạn có nhiều máy chủ DNS chỉ có thể / sẽ phục vụ một số truy vấn nhất định.

Tôi tin rằng bạn có thể giải quyết vấn đề này bằng cách đảm bảo rằng bạn có máy chủ DNS trên mạng LAN (máy chủ bạn sử dụng khi bạn không kết nối với VPN) được thiết lập /etc/resolv.conf, cũng như máy chủ DNS trên mạng công ty bạn muốn sử dụng qua VPN.

Sau đó, bạn sẽ cần chỉnh sửa /etc/default/dnsmasqvà thêm hoặc chỉnh sửa DNSMASQ_OPTS=dòng để đưa vào --all-servers.

Nếu bạn vẫn không thể nhận được các truy vấn DNS với thiết lập này, hãy sao chép tệp độ phân giải mà bạn đã tạo trong các bước ở trên sang một vị trí khác, như ~/resolv.conf, thiết /etc/resolv.conflập nameserver 127.0.0.1và đặt tùy chọn sau trong /etc/dnsmasq.conf:

resolv-file=/home/your_username/resolv.conf

Điều đó sẽ cấu hình hệ thống của bạn để truy vấn cài đặt dnsmasq cho DNS và nó sẽ lần lượt sử dụng cả máy chủ DNS cục bộ và máy chủ DNS VPN cho mọi truy vấn.

Chỉnh sửa : Bạn có thể tìm thấy các máy chủ DNS mà bạn hiện đang sử dụng cho một kết nối cụ thể bằng nmclicông cụ. Để tìm các máy chủ DNS được sử dụng bởi kết nối không dây của tôi, tôi đã sử dụng cú pháp sau:

nmcli dev list iface wlan0 | grep IP4.DNS

Nếu bạn chạy lệnh này trong khi bạn không được kết nối với VPN, và sau đó một lần nữa khi bạn được kết nối và có thể giải quyết các địa chỉ công ty của bạn, bạn nên tắt danh sách máy chủ DNS và trên VPN. Tôi hi vọng cái này giúp được.

Chỉnh sửa 2 : Nhìn vào các bảng định tuyến của bạn, có vẻ như quản trị viên VPN của bạn đã thiết lập cho bạn định tuyến tất cả lưu lượng truy cập của bạn thông qua VPN khi bạn được kết nối (cổng mặc định của bạn thay đổi thành địa chỉ VPN). Vì cả hai máy chủ DNS của bạn đều là địa chỉ công cộng và không có tuyến đường cụ thể nào được thiết lập khi bạn sử dụng VPN, nên bạn đang cố gắng thực hiện tra cứu DNS thông thường qua VPN và đó là điều không thành công.

Bạn có thể có một vài cách để thực hiện công việc này, tùy thuộc vào thiết lập VPN của bạn:

  • Nếu VPN sẽ cho phép bạn truy cập internet thông qua mạng công ty, nhưng không thực hiện truy vấn DNS tới máy chủ trên internet, hãy thêm các tuyến đến máy chủ DNS của bạn như sau: sudo route add -host 83.255.245.11 gw 192.168.0.1sudo route add -host 193.150.193.150 gw 192.168.0.1sau khi kết nối với VPN.

  • Nếu VPN không cho phép bạn truy cập internet thông qua mạng công ty, bạn sẽ cần thay đổi cài đặt cổng mặc định trên máy tính của mình để trỏ đến 192.168.0.1 sau khi bạn kết nối với VPN. Trong trường hợp này, bạn sẽ muốn thiết lập cổng mặc định thông thường của mình và sau đó thêm các tuyến mạng để truy cập thiết bị chỉ có VPN.

Bạn có thể cần phải giảm bảng định tuyến của mình trong trường hợp được kết nối với VPN được hiển thị trong pastebin thứ hai của bạn như sau:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Sau đó, thêm các tuyến đường khi bạn cần để truy cập vào thiết bị của công ty. Trong bảng định tuyến được hiển thị ở trên, tôi đã giả sử mạng / 24 trên VPN, có thể không chính xác. Bạn sẽ phải đặt mặt nạ thích hợp.


Làm cách nào để tìm hiểu các địa chỉ đến máy chủ DNS cục bộ của tôi và địa chỉ trên mạng công ty?
Tommy Brunn

Tôi đã chỉnh sửa câu trả lời của mình để cung cấp thông tin này.
jkt123

Theo nmcli, tôi nhận được cùng một máy chủ DNS khi tôi kết nối với VPN như khi tôi không, mặc dù rõ ràng là tôi không nên, vì tôi có thể giải quyết một tên miền nội bộ trên mạng công ty khi tôi m kết nối.
Tommy Brunn

Khi bạn chạy nmclimà không có kết nối VPN, bạn có thể phân giải DNS đúng cách không? Nếu không, bạn nên ngắt kết nối khỏi VPN, đảm bảo DNS của bạn hoạt động tốt và sau đó chạy nmcli.
jkt123

Có, tôi đã có thể giải quyết DNS bình thường khi ngắt kết nối với VPN. Ví dụ đầu ra: paste.ubfox.com/7345250
Tommy Brunn

0

Có một số lỗ hổng mà tôi không thể điền cho bạn liên quan đến cách để NetworkManager phối hợp mọi thứ cho bạn. Mặc dù vậy, tôi sẽ cố gắng làm rõ những thứ mà nó phối hợp cần để hoạt động. Không phải là một câu trả lời hoàn hảo, nhưng hy vọng hữu ích. Trên thực tế, cho rằng đây là một câu hỏi cũ, đây thực sự là cho hậu thế.

Bạn có thể không muốn sử dụng VPN công ty, ngoại trừ các kết nối với mạng công ty. Trong trường hợp đó, sẽ tốt hơn nếu thiết lập VPN của bạn chỉ định tuyến Phạm vi Mạng thích hợp đến VPN và giữ tuyến đường mặc định trỏ đến bộ định tuyến cục bộ của bạn, như trước đây. Thật tuyệt nếu các công ty thiết lập VPN của họ để chỉ định tuyến lưu lượng hoặc mạng của họ, nhưng thật không may, điều đó dường như rất hiếm. May mắn thay, bạn có thể cấu hình các tuyến đường trong thiết lập cục bộ của bạn.

Điều đó vẫn để lại cho bạn một vấn đề DNS tiềm năng. Nhận xét của jtk123 về những gì dnsmasq làm với DNS không phải là dnsmasq cụ thể - đó là cách DNS hoạt động. Nếu máy khách DNS hoặc trình phân giải trung gian nhận được phản hồi rằng mục nhập DNS không tồn tại, thì đó không phải là hành vi bình thường để quay lại hỏi máy chủ DNS khác. Điều đó có nghĩa là bạn cần một trình giải quyết dns sẽ trả lời như bạn muốn cho dù yêu cầu có liên quan đến mạng công ty hay không.

Có thể mạng công ty của bạn trả lời các truy vấn DNS liên quan đến internet rộng hơn, trong trường hợp bạn chỉ cần sử dụng nó và điều đó có thể ổn. Mặt khác, bạn cần một máy chủ DNS cục bộ chuyển tiếp các yêu cầu cho các tên miền được liên kết với công ty đến máy chủ DNS của họ và chuyển tiếp các yêu cầu khác ở nơi khác nếu thích hợp.

dnsmasq có thể được yêu cầu chuyển tiếp yêu cầu cho các tên miền cụ thể đến các máy chủ DNS ngược dòng cụ thể. ví dụ: xem tùy chọn --server như được nêu trong trang man dnsmasq.conf. Mặc dù vậy, tôi không rõ làm thế nào để người quản trị mạng chơi tốt với điều đó (đó là những gì tôi hiện đang tìm hiểu).

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.