OpenVPNサーバーのプッシュされたDNSに関係なく、OpenVPNクライアントが自身のDNSサーバーをプッシュすることを許可しますか?


9

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

「dhcp-option DNS 8.8.8.8」をプッシュします

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

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

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

openvpnサーバーで「push "dhcp-option DNS 8.8.8.8"」オプションがアクティブなときに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です


DHCPクライアントのプライマリオペレーティングシステムを指定していないので、実際に言えることは、「はい、DHCPが提供するDNSサーバーをオーバーライドすることは、通常は非常に簡単です」です。これが当てはまらないことを示唆しているのは何ですか。
Andrew B

オペレーティングシステムはWindowsとMacです。openvpnサーバーに接続すると、DNS設定を効果的に変更できなくなります。たとえば、openvpnサーバーはDNS:8.8.8.8を提供しています。たとえば、南アフリカ(ローカル)のDNSに変更しても、私の公式DNSサーバーは8.8.8.8(またはgoogleの類似物)のままです。一つはdnsleaktest c0mにDNSサーバをテストすることができます
Dimi

回答:


15

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

pull-filter ignore "dhcp-option DNS"

そして、引用されたテキストで始まるプッシュされた設定行をすべて無視します。

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

3つのアクションのキーワードはacceptignorereject。のユースケースを発見していませんreject


4

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パラメータにも興味があるかもしれません。


Damianoの努力に感謝しますが、正しい答えはTAPアダプターのDNSサーバーを変更する必要があるということです。DNSサーバーをプッシュするOpenVPNサーバーに接続している場合、インターネット接続のIPv4プロパティをカスタムDNSサーバーに変更しても役に立たないためです。この方法では、サーバー構成から何かを削除する必要はありませんが、WindowsマシンのTAPアダプターのIPv4プロパティを編集するだけです。
Dimi

@Dimi:実際には、そのソリューションは、表示するよりもはるかに制限されています。異なるVPN接続は異なるDNSサーバーを使用し、リンクを確立する順序によってどのTAPアダプターが使用されるかが決まるため、構成しているDNSがその特定のTAPアダプターを使用して確立される接続。要するに、回避策はある場合にのみ機能しますが、同じTAPアダプターを介して常に確立される単一のVPN接続です。
0xC0000022L 2017年

1

私の問題はまったく同じではありませんでしたが、この質問が検索結果に表示されるのに十分な症状があったので、同じ理由で他の誰かがここにアクセスした場合に備えて:

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

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


0

@aldavivaをありがとう、それは私のmacOS 10.11で動作しています。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.