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

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

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

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

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

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

答案1

使用redirect-private,但也添加route每个您想要通过 VPN 路由的网络。

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

答案2

// 编辑:抱歉,我发帖时没看到 windows 部分。下面是关于 linux 的。

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

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

附加到你的 vpn 连接配置文件

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

域名解析器

#!/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下载地址

#!/bin/sh

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

答案3

Karma Fusebox。七年零九个月后,它帮我解决了问题。

Linux raspberrypi 5.4.51-v7l+ 上的 OpenVPN 2.4.7 #1333

相关内容