我最近签署了一个 VPS(OpenVZ / Debian 32 位 Minimal),安装了 OpenVPN-AS(访问服务器),并成功连接到它,但我有一些疑问。
为了清楚起见,我将解释如何安装 OpenVPN-AS 以及我采取了哪些步骤。
在 SolusVM 接口上启用 TUN/TAP 和 PPP
更新 Debian
按照本指南安装 OpenVPN-AS:
- 按照本指南添加了两个用户:
- 使用创建的用户登录,下载“client.ovpn”文件并使用以下命令登录:sudo openvpn --config client.ovpn
我基本上就是这么做的。
一切正常,但有一些问题。我在路由器和客户端系统(即 Ubuntu 12.10)中都打开了端口 443(TCP)和 1194(UDP),并将 Deluge 和 Transmission 配置为使用 1194 端口。当 VPN 关闭时,两个程序上的测试都显示端口已打开,但是当我连接 VPN 时,端口在测试中显示为关闭,问题如下:Deluge 和 Transmission 仅通过 TCP 端口连接,而 VPN 的 1194 端口仅为 UDP。
这就是我的第一个问题:我应该怎么做才能打开 VPN 上的 1194 端口?是否可以强制 Deluge 或 Transmission 使用 UDP 端口?
我的第二个问题更简单(我认为如此)。正如我之前所说,我可以使用命令“sudo openvpn --config client.ovpn”连接到 VPN,缺点是必须保持终端打开,我想通过图形界面连接,通常是:单击顶部栏上的网络管理器 > 转到 VPN 连接 > 选择连接 > 完成。但我不知道如何做到这一点,这是我的第二个问题:如何导出“client.ovpn”配置或通过图形界面设置连接?
我使用 Ubuntu 已有一年半,我认为自己是一个中级用户,但是,我以前从未使用过 VPS 和 OpenVPN-AS,所以我对这个主题完全是菜鸟。我曾在 Google 上搜索过我的疑惑,但大多数教程都是基于 OpenVPN,而不是 OpenVPN-AS,显然它们有很大不同。
我希望我的帖子足够清晰,抱歉我的英语不好。任何帮助我都会很感激,谢谢!
答案1
关于您的第一个问题:服务器上应打开 UDP 端口 1149,以便客户端可以连接到它。我在这里检查过,客户端似乎默认使用更高的端口范围 (>50000) 向服务器端口 1149 发送和接收 UDP 数据包。
但是,你似乎对 VPN 的工作原理有些误解,所以我试着稍微澄清一下。在启动客户端时,应调整路由表,以便所有(或大多数或部分,取决于你的配置)流量都通过 tun0 接口而不是 eth0 接口。唯一直接通过 eth0 的数据包应该是发送到端口 1149 的服务器的 UDP 数据包,所有其他数据包(TCP、UDP 或 ICMP)都通过 tun0 路由,在那里它们由 openvpn 封装,然后通过 1149 UDP 数据包通过 eth0 发送到服务器。
在服务器上,封装被反转,TCP、UDP 或 ICMP 数据包被重新组装并从那里发送,就像它们来自本地接口(eth0/tun0/tap0)上的邻近网络节点并相应地路由一样。因此,您的客户端似乎“拥有”服务器上的一个接口。因此得名虚拟的专用网络。
因此,您必须配置 transmission 或 deluge 才能使用任何其他端口号大于 1149 - 因为这个端口是 VPN 使用的 - 即 16000 (TCP 和 UDP)。在 transmission 或 deluge 中使用此端口,并在服务器的防火墙中打开它,并可能将其路由到 VPN 接口,因此在此示例中(假设服务器具有接口 eth0):
在服务器上打开端口16000
iptables -A INPUT -i eth0 -m tcp -p tcp --dport 16000 -j ACCEPT
iptables -A INPUT -i eth0 -m udp -p udp --dport 16000 -j ACCEPT
并应用 NAT。这些行将服务器上所有传入的 TCP 和 UDP 连接重定向到 IP 地址为 10.0.0.5 的 VPN 接口
iptables -t nat -A PREROUTING -i eth0 -m multiport -p udp --dports 16000:16010 -j DNAT --to-destination 10.0.0.5
iptables -t nat -A PREROUTING -i eth0 -m multiport -p tcp --dports 16000:16010 -j DNAT --to-destination 10.0.0.5
好吧,可能还有其他或更好的方法来解决这个问题,但这应该可以帮助你入门。