Ubuntu
UFW 正在通過 VPN 阻止 DNS 請求
我的 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