Cho phép máy khách OpenVPN đẩy các máy chủ DNS của chính nó, bất kể máy chủ đẩy của máy chủ OpenVPN là gì?


9

Có một máy chủ OpenVPN đang chạy trên Debian và nó đẩy DNS trong tệp cấu hình máy chủ:

đẩy "tùy chọn dhcp DNS 8.8.8.8"

Có tùy chọn nào cho phép người dùng thay đổi máy chủ DNS đó ở phía máy khách không?

Đây là lý do, máy chủ openvpn phải đẩy DNS vì nếu không, nhiều máy khách OpenVPN sẽ không thể mở các trang web cho đến khi máy chủ DNS được đặt thủ công trong cài đặt mạng của hệ thống.

Mục tiêu của tôi là tự động áp dụng máy chủ DNS mặc định cho người dùng không có kỹ thuật, đồng thời cho phép người dùng máy tính có kỹ năng thiết lập máy chủ DNS của riêng họ.

Lưu ý rằng chỉ cần thay đổi cài đặt DNS trên PC trong khi tùy chọn 'đẩy "tùy chọn dhcp DNS 8.8.8.8" đang hoạt động trên máy chủ openvpn, không có gì. DNS được đẩy bởi máy chủ vẫn không phụ thuộc vào cài đặt DNS cục bộ.

Có ý kiến ​​gì không?

Cấu hình máy chủ OpenVPN:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

CẬP NHẬT: Các hệ điều hành máy khách là Windows và Mac


Bạn chưa chỉ định hệ điều hành chính của các máy khách DHCP của mình, vì vậy tất cả những gì chúng tôi thực sự có thể nói là "có, ghi đè các máy chủ DNS được cung cấp DHCP thường khá tầm thường". Những gì bạn đã trải qua mà đề nghị rằng đây không phải là trường hợp?
Andrew B

Xin lỗi, hệ điều hành là Windows và Mac. Khi được kết nối với máy chủ openvpn, tôi sẽ không thể thay đổi cài đặt DNS một cách hiệu quả. Ví dụ: máy chủ openvpn cung cấp DNS: 8.8.8.8 và khi tôi đổi sang DNS ở Nam Phi (cục bộ), máy chủ DNS chính thức của tôi vẫn là 8.8.8.8 (hoặc tương tự của google). Người ta có thể kiểm tra máy chủ DNS trên dnsleaktest c0m
Dimi

Câu trả lời:


15

Kể từ năm 2017 (OpenVPN 2.4), điều này là có thể. Thêm dòng này vào tập tin cấu hình máy khách của bạn:

pull-filter ignore "dhcp-option DNS"

và nó sẽ bỏ qua tất cả các dòng cấu hình đẩy bắt đầu bằng văn bản được trích dẫn.

Các tùy chọn được khớp từ trên xuống, do đó, trận đấu đầu tiên được sử dụng. Bạn có thể sử dụng điều này để cho phép một số tuyến đường và từ chối những tuyến khác, nếu nó phù hợp với nhu cầu của bạn.

Ba từ khóa hành động là accept, ignore, và reject. Tôi đã không phát hiện ra một trường hợp sử dụng cho reject.


4

Trong tài liệu chính thức của OpenVPN, bạn có thể tìm thấy:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

Thật không may, ngoài những gì bạn đang hỏi, điều này còn có tác dụng phụ là vô hiệu hóa cổng chuyển hướng được cung cấp bởi cấu hình của bạn và điều này có thể gây ra sự cố cho trường hợp của bạn.

Những gì tôi đề nghị là một cách tiếp cận hoàn toàn khác nhau.

Như bạn đã đề cập rõ ràng: " Mục tiêu của tôi là tự động áp dụng máy chủ DNS mặc định cho người dùng không có kỹ thuật, đồng thời cho phép người dùng máy tính có kỹ năng đặt máy chủ DNS của riêng họ. " Có vẻ như bạn biết chính xác người dùng nào bạn muốn cung cấp một cấu hình DNS và những người dùng mà bạn không muốn cung cấp cấu hình đó.

Do đó, thay vì đẩy cấu hình của bạn trực tiếp vào tệp cấu hình OpenVpn chính (... và, như vậy, cung cấp cấu hình đó cho TẤT CẢ người dùng của bạn), bạn có thể triển khai cấu hình cho mỗi người dùng . Bạn có thể làm điều này với:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

Vì vậy, đối với cấu hình chính, bạn nên xóa :

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

thêm tham chiếu vào thư mục / etc / openvpn / userconf (làm ví dụ. Hãy thoải mái chọn bất cứ thứ gì bạn thích):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Sau đó, trong thư mục userconf như vậy, hãy tạo một tệp cho mỗi người dùng bạn muốn cung cấp DNS đó, kể cả trong tệp đó hai hàng đã bị xóa ở trên.

Rõ ràng bạn có thể tự do tinh chỉnh cấu hình openvpn cho mọi người dùng, không giới hạn tùy chỉnh ở hai hàng trên.

Như một lưu ý cuối cùng, bạn cũng có thể quan tâm đến tham số độc quyền ccd .


Cảm ơn nỗ lực của Damiano nhưng tôi e rằng câu trả lời chính xác là máy chủ DNS của bộ điều hợp TAP nên được thay đổi, vì việc thay đổi thuộc tính IPv4 của kết nối Internet thành máy chủ DNS tùy chỉnh không giúp ích gì khi kết nối với máy chủ OpenVPN đẩy máy chủ DNS. Bằng cách này, không bắt buộc phải xóa bất cứ thứ gì khỏi cấu hình máy chủ, mà chỉ cần chỉnh sửa các thuộc tính IPv4 của bộ điều hợp TAP của máy Windows.
Dimi

@Dimi: thực sự giải pháp đó hạn chế hơn nhiều so với việc bạn xuất hiện. Do các kết nối VPN khác nhau sử dụng các máy chủ DNS khác nhau và thứ tự thiết lập các liên kết sẽ xác định bộ điều hợp TAP nào được sử dụng, tôi không thể cấu hình bộ điều hợp TAP để sử dụng một bộ DNS cụ thể, vì các DNS tôi đang định cấu hình có thể không áp dụng cho kết nối được thiết lập bằng bộ điều hợp TAP cụ thể đó. Nói tóm lại, cách giải quyết của bạn chỉ hoạt động nếu có nhưng một kết nối VPN duy nhất luôn được thiết lập thông qua cùng một bộ điều hợp TAP.
0xC0000022L

1

Vấn đề của tôi không hoàn toàn giống nhau, nhưng các triệu chứng tương tự nhau đủ để câu hỏi này xuất hiện trong kết quả tìm kiếm, vì vậy trong trường hợp có ai khác ở đây vì lý do tương tự:

Tôi đang sử dụng Tunnelblick , GUI OpenVPN cho Mac OS. Máy chủ OpenVPN của tôi không được đặt để đẩy bất kỳ tùy chọn DHCP hoặc DNS nào, nhưng máy khách vẫn đang sử dụng máy chủ DNS qua VPN, thay vì máy chủ DNS không phải VPN cục bộ mà tôi muốn sử dụng.

Giải pháp là vào tab Cấu hình → Cài đặt của Tunnelblick và thay đổi Đặt DNS / THẮNG thành Không đặt máy chủ tên .


0

Cảm ơn @aldaviva, nó hoạt động trên macOS 10.11 của tôi.

Đính kèm ảnh chụp màn hình của tôi.

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

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.