我目前运行 Ubuntu 服务器 18.04.1 LTS。我已经设置了拆分隧道 VPN,它似乎工作正常,但是我想检查 DNS 泄漏。有没有办法用命令行来做到这一点?无法在 Ubuntu 服务器中真正打开浏览器...
更新了 heynnema 的信息:
ls -al /etc/openvpn
total 52
drwxrwxrwx 4 root root 4096 Nov 2 21:32 .
drwxr-xr-x 99 root root 4096 Nov 3 12:40 ..
-rwxrwxrwx 1 root root 1403 Nov 2 20:35 ca.crt
drwxrwxrwx 2 root root 4096 Sep 5 14:43 client
-rwxrwxrwx 1 root root 1597 Nov 2 20:39 iptables.sh
-rwxrwxrwx 1 root root 18 Nov 2 20:36 login.txt
-rwxrwxrwx 1 root root 670 Nov 2 21:29 openvpn.conf
-rwxrwxrwx 1 root root 623 Nov 2 20:40 routing.sh
drwxrwxrwx 2 root root 4096 Sep 5 14:43 server
-rwxrwxrwx 1 root root 636 Nov 2 20:35 tls.key
-rwxrwxrwx 1 root root 11773 Nov 12 2017 update-systemd-resolved
#
grep -i hosts /etc/nsswitch.conf
hosts: files resolve [!UNAVAIL=return] dns
# 我从在线指南中获得的“防止 DNS 泄漏”部分,但是如果我启用该命令,VPN 对我根本不起作用。
up/down/down-pre
#up and down scripts to be executed when VPN starts or stops
up /etc/openvpn/iptables.sh
down /etc/openvpn/update-systemd-resolved
down-pre
# prevent DNS leakage
#dhcp-option DOMAIN-ROUTE .
更多信息:
#! /bin/bash
# Niftiest Software – www.niftiestsoftware.com
# Modified version by HTPC Guides – www.htpcguides.com
export INTERFACE="tun0"
export VPNUSER="vpn"
export LOCALIP="192.168.1.10"
export NETIF="enp1s0"
# flushes all the iptables rules, if you have other rules to use then add them into the script
iptables -F -t nat
iptables -F -t mangle
iptables -F -t filter
# mark packets from $VPNUSER
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT ! --dest $LOCALIP -m owner --uid-owner $VPNUSER -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT --dest $LOCALIP -p udp --dport 53 -m owner --uid-owner $VPNUSER -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT --dest $LOCALIP -p tcp --dport 53 -m owner --uid-owner $VPNUSER -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT ! --src $LOCALIP -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -j CONNMARK --save-mark
# allow responses
iptables -A INPUT -i $INTERFACE -m conntrack --ctstate ESTABLISHED -j ACCEPT
# block everything incoming on $INTERFACE to prevent accidental exposing of ports
iptables -A INPUT -i $INTERFACE -j REJECT
# let $VPNUSER access lo and $INTERFACE
iptables -A OUTPUT -o lo -m owner --uid-owner $VPNUSER -j ACCEPT
iptables -A OUTPUT -o $INTERFACE -m owner --uid-owner $VPNUSER -j ACCEPT
# all packets on $INTERFACE needs to be masqueraded
iptables -t nat -A POSTROUTING -o $INTERFACE -j MASQUERADE
# reject connections from predator IP going over $NETIF
iptables -A OUTPUT ! --src $LOCALIP -o $NETIF -j REJECT
# Start routing script
/etc/openvpn/routing.sh
exit 0
检查cat /etc/resolv.conf
名称服务器地址。如果它显示 127.0.0.1 或 127.0.0.53,那么您可能有 DNS 泄漏。您应该看到您的 VPN DNS 的 IP 地址和 127.0.0.1/127.0.0.53(可能指向您的路由器 192.168.0.1/192.168.1.1)。路由器的 DNS 路由器可能设置为 8.8.8.8/8.8.4.4 或 208.67.222.222/208.67.220.220,您将遇到 DNS 泄漏。
如果您可以通过 SSH 连接到您的服务器并获得 GUI,您可以检查http://dnsleak.com或http://dnsleaktest.com以检查 DNS 泄漏。
注意:这可能不适用于“拆分隧道 VPN 设置”,我不知道。更新#1:
用户正在运行
openvpn-system-resolved
,所以我的大部分答案都不适用。我做了什么:
然后浏览一个网站进行 dns 泄漏测试。