![Ubuntu 服务器 22.04 VM Openvpn 连接问题](https://linux22.com/image/1027499/Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%2022.04%20VM%20Openvpn%20%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98.png)
我目前正在开展一个家庭实验室项目,并使用 VMWare ESXI 7 构建了一个家庭服务器。在这个 Hypervisor 上,我运行两个 ubuntu 22.04 服务器映像,一个用于文件共享,一个用作 vpn 服务器。
我的目标是能够从我的笔记本电脑远程访问我的家庭网络。这就是我尝试使用 openvpn 设置 vpn 服务器的原因。
为了设置我的 vpn,我使用了在 github 上找到的以下脚本: https://github.com/angristan/openvpn-install
尽管脚本运行正常,但我无法在客户端和服务器之间建立连接。
客户端日志:
客户端日志(由于垃圾邮件警告,无法以文本格式发布这些内容)
和服务器日志:
服务器日志片段(由于垃圾邮件警告,无法以文本格式发布这些内容)
我尝试过从家庭网络内部和外部(电话网络共享)进行连接,每次都得到完全相同的结果。
因为我的 vpn 服务器位于 NAT 后面,所以我有两个 ipv4 地址:
以下是 $ ip 结果:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:6a:f0:7c brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.1.30/24 metric 100 brd 192.168.1.255 scope global dynamic ens160
valid_lft 82561sec preferred_lft 82561sec
inet6 2a01:cb10:590:cb00:20c:29ff:fe6a:f07c/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86378sec preferred_lft 578sec
inet6 fe80::20c:29ff:fe6a:f07c/64 scope link
valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.8.0.1/24 scope global tun0
valid_lft forever preferred_lft forever
inet6 fd42:42:42:42::1/112 scope global
valid_lft forever preferred_lft forever
inet6 fe80::3fb6:59d8:f6a4:278d/64 scope link stable-privacy
valid_lft forever preferred_lft forever
当我查询 opendns 时,我得到了这个:
Using domain server:
Name: resolver1.opendns.com
Address: 208.67.222.222#53
Aliases:
myip.opendns.com has address A.B.C.D
然而,这个参数似乎已经在上述脚本中被考虑到了,并且所有配置文件看起来都正常。
我的 openvpn 服务器配置如下所示:
port 1194
proto udp6
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 94.140.14.14"
push "dhcp-option DNS 94.140.15.15"
push "redirect-gateway def1 bypass-dhcp"
server-ipv6 fd42:42:42:42::/112
tun-ipv6
push tun-ipv6
push "route-ipv6 2000::/3"
push "redirect-gateway ipv6"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_G6hxio5CQJ6lKNV4.crt
key server_G6hxio5CQJ6lKNV4.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3
Iptables:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * ens160 10.8.0.0/24 0.0.0.0/0
和
#!/bin/sh
iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o ens160 -j MASQUERADE
iptables -I INPUT 1 -i tun0 -j ACCEPT
iptables -I FORWARD 1 -i ens160 -o tun0 -j ACCEPT
iptables -I FORWARD 1 -i tun0 -o ens160 -j ACCEPT
iptables -I INPUT 1 -i ens160 -p udp --dport 1194 -j ACCEPT
ip6tables -t nat -I POSTROUTING 1 -s fd42:42:42:42::/112 -o ens160 -j MASQUERADE
ip6tables -I INPUT 1 -i tun0 -j ACCEPT
ip6tables -I FORWARD 1 -i ens160 -o tun0 -j ACCEPT
ip6tables -I FORWARD 1 -i tun0 -o ens160 -j ACCEPT
ip6tables -I INPUT 1 -i ens160 -p udp --dport 1194 -j ACCEPT
我检查了 IP 转发并且它似乎已正确启用。
服务器状态正常:
● [email protected] - OpenVPN connection to server
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-08-05 23:26:08 UTC; 59min left
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 887 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 1033)
Memory: 3.1M
CPU: 77ms
CGroup: /system.slice/system-openvpn.slice/[email protected]
└─887 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid
UDPv6 link local (bound): [AF_INET6][undef]:1194
UDPv6 link remote: [AF_UNSPEC]
GID set to nogroup
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL IPv4: base=10.8.0.2 size=253
IFCONFIG POOL IPv6: base=fd42:42:42:42::2 size=65534 netbits=112
NOTE: IPv4 pool size is 253, IPv6 pool size is 65534. IPv4 pool size limits the number of clients
that can be served from the pool
IFCONFIG POOL LIST
Initialization Sequence Completed
我确实在 ufw 日志中发现了很多异常(阻止的家庭网络请求),但是将家庭网络 IP 地址列入白名单没有任何作用。
此外,我尝试在禁用所有防火墙(客户端服务器和 ISP 盒)的情况下进行连接,但问题并未得到解决。
令人惊讶的是,当我在我的公共 IP 地址上使用 nmap 并使用端口 1194 时,它起作用了:
Starting Nmap 7.80 ( https://nmap.org ) at 2022-08-06 00:35 CEST
Nmap scan report for areims-XXX-X-XX-XXX.wXX-XXX.abo.wanadoo.fr (A.B.C.D)
Host is up (0.0048s latency).
PORT STATE SERVICE
1194/udp open|filtered openvpn
Nmap done: 1 IP address (1 host up) scanned in 0.38 seconds
无论在家庭网络内部还是外部,nmap 的结果都是相同的。
是的,我尝试了很多方法来解决此 vpn 问题,但都没有成功。我没能建立连接。所以,如果您有想法或需要更多信息,请告诉我。
多谢!
答案1
今天早上,我通过在裸机 Ubuntu 机器上安装 vpn 进行了进一步测试,以查看 ESXI 是否导致了此问题。结果相同。
因此,我检查了我的 ISP 路由器以验证配置,问题就出在那里。我确实在我的 ISP 路由器防火墙上打开了 1194 端口,但我没有配置 NAT 来将连接转发到我的 vpn 服务器。因此,我添加了一条新规则,现在一切正常,我可以从家庭网络外部访问我的 ESXI 管理面板。