Debian上で実行されているOpenVPNサーバーがあり、サーバー構成ファイルにDNSをプッシュします。

「dhcp-optionDNS8.8.8.8」をプッシュします

ユーザーがクライアント側でそのDNSサーバーを変更できるようにするオプションはありますか?

ここに問題があります。openvpnサーバーはDNSをプッシュする必要があります。そうしないと、システムのネットワーク設定でDNSサーバーを手動で設定するまで、多くのOpenVPNクライアントがWebページを開くことができなくなります。

私の目標は、デフォルトのDNSサーバーを技術的に熟練していないユーザーに自動的に適用すると同時に、熟練したコンピューターユーザーが独自のDNSサーバーを設定できるようにすることです。

'push "dhcp-option DNS 8.8.8.8"'オプションがopenvpnサーバーでアクティブなときに、PCでDNS設定を変更するだけでは、何も実行されないことに注意してください。サーバーによってプッシュされたDNSは、ローカルDNS設定に関係なく残ります。

何か案は?

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

更新:クライアントのオペレーティングシステムはWindowsとMacです

answer

2017(OpenVPN 2.4)の時点で、これが可能になりました。次の行をクライアント構成ファイルに追加します。

pull-filter ignore "dhcp-option DNS"

引用されたテキストで始まるプッシュされた構成行はすべて無視されます。

オプションはトップダウンで一致するため、最初の一致が使用されます。必要に応じて、これを使用して一部のルートを許可し、他のルートを拒否できます。

3つのアクションのキーワードはacceptignorerejectのユースケースは見つかりませんでしたreject

OpenVPNの公式ドキュメントには、次のものがあります。

[...]
--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.
[...]

残念ながら、これあなたが求めていることに加えて、あなたの設定によって提供されるリダイレクトゲートウェイも無効にするという副作用があり、あなたの場合、これは問題を表す可能性があります。

私が提案するのは、まったく異なるアプローチです。

あなたが明示的に述べたように、「私の目標は、技術的に熟練していないユーザーにデフォルトのDNSサーバーを自動的に適用すると同時に、熟練したコンピューターユーザーが独自のDNSサーバーを設定できるようにすることです」提供するユーザーを正確に把握しているようです DNS構成と、そのような構成を提供したくないユーザー。

したがって、メインのOpenVpn構成ファイルに直接構成をプッシュする代わりに(...そして、そのような構成をすべてのユーザーに提供する)、ユーザーごとの構成実装できますあなたはこれを行うことができます:

--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.

したがって、メイン構成については、以下を削除する必要があります

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

そして、追加を参照するの/ etc / openvpnの/ userconf(例として、あなたが好きな選択する自由を感じる。)ディレクトリ:

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

次に、そのようなuserconfディレクトリに、そのようなDNSを提供するユーザーごとに1つのファイルを作成します。このようなファイルには、上記で削除した2つの行が含まれます。

明らかに、カスタマイズを上記の2行に制限するのではなく、すべてのユーザーのopenvpn構成を自由に微調整できます。

最後に、ccd-exclusiveパラメーターにも関心があるかもしれません

私の問題はまったく同じではありませんでしたが、症状はこの質問が検索結果に表示されるほど類似していたため、同じ理由で他の誰かがここにたどり着いた場合に備えて:

MacOS用のOpenVPNGUIであるTunnelblickを使用しています。私のOpenVPNサーバーはDHCPまたはDNSオプションをプッシュするように設定されていませんでしたが、クライアントは、使用したいローカルの非VPN DNSサーバーではなく、VPN経由でDNSサーバーを使用していました。

解決策は、Tunnelblickの[構成]→[設定]タブに移動し、[ DNS / WINSの設定]を[ネームサーバーを設定しない]に変更することでした

@aldavivaに感謝します、それは私のmacOS10.11で動作しています。

スクリーンショットを添付してください。

ここに画像の説明を入力してください