当服务器连接到 OpenVPN 时允许访问我的服务器的 UDP 端口

当服务器连接到 OpenVPN 时允许访问我的服务器的 UDP 端口

我最近购买了一些便宜的 vps,并且想打开一些端口,我已经在服务器上使用 ufw 完成了这些操作。顺便说一下,我正在连接到一个 VPN,它允许我通过 OpenVPN 将端口转发到我的本地机器,因为我的本地提供商正在阻止端口。

OpenVPN 在我的 PC 上运行良好,所有连接均可正常工作,但当我连接到 VPN 时,它显示只有 TCP 端口是打开的,所有 UDP 端口都关闭,但当我检查某些网站端口检查器并粘贴服务器的 IP 时,它显示其打开。

我猜它与 iptables 或类似的东西有关..?有人能帮我吗?谢谢

编辑。我​​通过执行以下命令完成了这项工作:

iptables -t nat -A PREROUTING -d SERVERIP -p UDP --dport 1234-j DNAT --to-dest 10.8.0.6:1234

iptables -t filter -A INPUT -p udp -d 10.8.0.6 --dport 3480 -j ACCEPT

10.8.0.6 是 OPENVPN 的 IP

答案1

如果我理解了你想要实现的目标,你正在尝试从 VPS 执行 NAT,并将 TCP 和 UDP 端口转发到可通过 VPN 隧道(OpenVPN)访问的本地网络。由于路由返回问题,这可能不起作用,你的本地网络可能配置为不使用 OpenVPN 连接即可访问互联网,因此来自你的 NAT 的流量不会响应你的 VPS。

您可以尝试通过服务(如 nginx)代理您的流量。这里有一个例子。

安装 Nginx(在你的 VPS 上):

apt install nginx

创建专用于端口规则的新文件夹

mkdir /etc/nginx/ports/

将以下几行添加到文件末尾/etc/nginx/nginx.conf

stream {
  include /etc/nginx/ports/*;
}

最后,在这个新文件夹中创建包含规则的任何文件。下面是 tcp 和 udp 重定向的示例。


server {
  listen 1234;
  proxy_pass <computer-ip>:1234;
}

server {
  listen 1234 udp;
  proxy_pass <computer-ip>:1234;
}

Of course, port 1234 must be opened in your ufw as your mentioned.

相关内容