Ubuntu

UFW 正在通過 VPN 阻止 DNS 請求

  • December 9, 2018

我的 UFW 在 Ubuntu 18.04 上有一個非常奇怪的行為。我設置了基本規則,一切正常,直到我通過 VPN 將客戶端連接到該伺服器。在客戶端 ping 工作正常,但 nslookup / 域 ping 被拒絕。一旦我將關閉 ufw,它執行良好。UFW 配置:VPN 子網為 10.99.0.0/24(使用 OpenVPN):

ufw default deny incoming
ufw default allow outgoing
1194                       ALLOW       Anywhere
Anywhere                   ALLOW       10.99.0.0/24
6969                       ALLOW       10.99.0.0/24
10.99.0.0/24               ALLOW       Anywhere

從日誌中(使用 8.8.8.8 和 1.0.0.1 作為 DNS):

Dec  7 23:40:28 snm kernel: [15432.700282] [UFW BLOCK] IN=tun0 OUT=eth0 MAC= SRC=10.99.0.2 DST=1.0.0.1 LEN=71 TOS=0x00 PREC=0x00 TTL=127 ID=1189 PROTO=UDP SPT=64312 DPT=53 LEN=51
Dec  7 23:41:08 snm kernel: [15472.370487] [UFW BLOCK] IN=tun0 OUT=eth0 MAC= SRC=10.99.0.2 DST=1.0.0.1 LEN=71 TOS=0x00 PREC=0x00 TTL=127 ID=1192 PROTO=UDP SPT=50962 DPT=53 LEN=51
Dec  7 23:41:09 snm kernel: [15473.384535] [UFW BLOCK] IN=tun0 OUT=eth0 MAC= SRC=10.99.0.2 DST=8.8.8.8 LEN=71 TOS=0x00 PREC=0x00 TTL=127 ID=1193 PROTO=UDP SPT=50962 DPT=53 LEN=51

你有什麼建議如何調試這個?

如果您所看到的只是域 ping 失敗,則需要使伺服器和/或客戶端防火牆允許轉發:

# Allow TUN interface connections to OpenVPN server
iptables -A INPUT -i tun+ -j ACCEPT

# Allow TUN interface connections to be forwarded through other interfaces
iptables -A FORWARD -i tun+ -j ACCEPT

更多資訊:這裡

還要查看客戶端到客戶端設置,這是訪問 VPN 上其他電腦所必需的,如果未啟用,您將看不到其他電腦連接。

  • 如果您希望連接客戶端能夠通過 VPN 相互訪問,請取消註釋客戶端到客戶端指令。預設情況下,客戶端只能訪問伺服器。

找到更多資訊:這裡

好的,最後我通過調整 IPTABLES 解決了我的問題:

iptables -I FORWARD -i tun0 -o eth0 \
        -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
        -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
         -s 10.8.0.0/24 -j MASQUERADE

我現在可以簡化 ufw 規則:

To                         Action      From
--                         ------      ----
1194                       ALLOW       Anywhere
22                         ALLOW       10.8.0.0/24

如果我想在 server.conf 中更改 IP 池,但我必須相應地修改 ip 表。

port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
#push "redirect-gateway def1 bypass-dhcp"
#push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
log-append /var/log/openvpn/openvpn.log
status openvpn-status.log
verb 3
crl-verify crl.pem

引用自:https://unix.stackexchange.com/questions/486693