我配置了 openvpn(OpenVPN 2.1.0)和 apache 2(分别在 443 和 10443(使用 modssl)上监听。这两个应用程序监听得很好:
tcp 0 0 x.x.x.x:10443 0.0.0.0:* LISTEN 1130/apache2
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 7860/openvpn
但是,由于我试图确定的原因,配置如下的端口共享选项(使用公共 IP)不起作用:
port 443
port-share x.x.x.x 10443
openvpn日志中的错误是:
TCP connection established with [AF_INET]y.y.y.y:3123 Socket Buffers: R=[131072->131072] S=[131072->131072]
TCPv4_SERVER link local: [undef]
TCPv4_SERVER link remote: [AF_INET]y.y.y.y:3123
y.y.y.y:3123 Non-OpenVPN client protocol detected
PORT SHARE PROXY: connect to port-share server failed
y.y.y.y:3123 SIGTERM[soft,port-share-redirect] received, client-instance exiting
TCP/UDP: Closing socket
我认为 openvpn 没有连接权限,但它是以 root 身份启动的
root 7862 0.0 0.0 99552 924 ? S 9 月 22 日 0:00 /usr/sbin/openvpn --writepid /var/run/openvpn.server.pid --daemon ovpn-server --cd /etc/openvpn --config /etc/openvpn/server.conf --script-security 2
防火墙上443和10443端口已打开。
感谢您的任何意见和建议!
我已经咨询过:
编辑 iptables 规则:
Chain ufw-user-input (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:www
ACCEPT udp -- anywhere anywhere udp dpt:www
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
ACCEPT udp -- anywhere anywhere udp dpt:25
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:openvpn
ACCEPT tcp -- 10.0.0.0/8 anywhere tcp dpt:mysql
ACCEPT udp -- 10.0.0.0/8 anywhere udp dpt:mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT udp -- anywhere anywhere udp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:10443
ACCEPT udp -- anywhere anywhere udp dpt:10443
编辑以更好地解释错误日志:openvpn 远程连接正在运行(我成功连接到端口 443 上的 VPN)。端口转发不起作用。10443 上的 HTTPS 连接正在运行,但端口 443 上的 HTTPS 连接无法与端口共享选项配合使用。
答案1
我终于找到了这个问题的答案。
尽管防火墙规则似乎正确,但问题在于 openvpn 与 apache 监听的主机(公共 IP)不同。对 openvpn 和 apache 使用相同的主机(和公共 IP)解决了这个问题。