题 在没有重定向网关的情况下替换Openvpn客户端上的DNS


我正在尝试使用配置的OpenVPN服务器将DNS推送到客户端:

 push "dhcp-option DNS 192.168.x.x"

它运行良好,但我真正需要的是在VPN连接期间我不想使用我的主解析器,客户端应该只使用服务器提供的DNS。 它可以用推动完成 重定向网关,但我不想通过VPN隧道连接客户端的所有连接,只需通过特定的网络。

是否有可能以某种方式做到这一点?
Linux客户端可以使用脚本,在Windows上我不确定


5
2017-10-26 17:12




您不希望通过网络浏览等外部通信进行隧道连接吗?在Windows上,这是VPN连接属性下的一个选项。 - scape
scape,你确定你在谈论openvpn Btw,问题不在于隧道 - Gabor Vincze


答案:


使用 redirect-private,还要加 route 每个要通过VPN路由的网络。

顺便说一下,当该接口没有到其DNS服务器的路由时,其他接口上的DNS设置将停止工作。这就是发生的事情 redirect-gateway 从您的(W)LAN接口丢弃默认网关,并通过原始GW将主机路由添加到VPN服务器IP。取决于您的设置,可能没有正常工作设置,您必须更改DNS命名以包含内部网络的一些子域。


2
2017-11-10 16:51



让我试一试,这似乎是一个可行的选择 - Gabor Vincze


//编辑:对不起,我发布这个时没看到窗口部分。以下是关于linux的。

不久前我用openvpn和linux客户端遇到了这个问题。但resolvconf让我在编写推送的dhcp-options时遇到了额外的困难  到本地resolv.conf文件,并且在断开与vpn的连接后无法恢复旧的名称服务器。所以我放弃并制作了两个小的bash脚本来处理我在vpn connect / disconnect上的resolv.conf文件。 (当然,这些脚本必须安装在每个客户端上,所以它没有通用的解决方案。)

up-script将常规名称服务器定义备份到安全位置,然后使用收到的dhcp-option中的名称覆盖它们。向下脚本只是将常规文件移回原位。

附加到你的VPN连接conf

script-security 2
up /etc/openvpn/dns.up.sh
down /etc/openvpn/dns.down.sh

dns.up.h

#!/bin/bash

        mv /etc/resolv.conf /etc/resolv.conf.novpn

        for optionname in ${!foreign_option_*} ; do
                option="${!optionname}"
                echo $option
                part1=$(echo "$option" | cut -d " " -f 1)
                if [ "$part1" == "dhcp-option" ] ; then
                        part2=$(echo "$option" | cut -d " " -f 2)
                        part3=$(echo "$option" | cut -d " " -f 3)
                        if [ "$part2" == "DNS" ] ; then
                                IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
                        fi
                        if [ "$part2" == "DOMAIN" ] ; then
                                IF_DNS_SEARCH="$IF_DNS_SEARCH $part3"
                        fi
                fi
        done
        R=""
        for SS in $IF_DNS_SEARCH ; do
                R="${R}search $SS
"
        done
        for NS in $IF_DNS_NAMESERVERS ; do
                R="${R}nameserver $NS
"
        done
        echo -n "$R" > /etc/resolv.conf

dns.down.sh

#!/bin/sh

mv /etc/resolv.conf.novpn /etc/resolv.conf

0
2017-11-09 03:49



不幸的是,OP明确提到他需要帮助才能在Windows上使用它。引用“Linux客户端可以使用脚本,在Windows上我不确定”。 - chutz
我觉得有点尴尬俯视那个部分(以及windows 7标签)。我希望这至少可以帮助一些在这里偶然发现的Linux用户。 - Karma Fusebox