我需要在 OpenVPN 服务器上打开特定端口来传输 torrent 流量吗?

我需要在 OpenVPN 服务器上打开特定端口来传输 torrent 流量吗?

如果我从 Mac(OSX 10.10)上的 Tunnelblick 连接到端口 1194 上的 openvpn 服务器,如何确保 Transmission 使用的端口(例如 66887)将对传入连接开放?

当前设置:

连接到 Wifi 热点(不受我控制,无法访问路由器设置)连接到 OpenVPN 服务器(我可以完全控制配置)

Transmission“可以工作”,但速度很慢,并且 Transmission 网络偏好设置中端口显示为已关闭。OpenVPN VPN 连接对所有标准 http 流量均正常工作。

Openvpn 正在远程 Ubuntu 服务器上运行。我尝试使用 ufw 打开上述端口,但没有效果,我怀疑需要更深层次的网络配置。

openvpn版本是OpenVPN 2.3.2 x86_64。

在这种情况下,是否可以转发端口 66887,或者我是否需要访问本地 LAN 路由器才能使其工作?

我尝试通过首选项 plist 文件更改 Transmission 的绑定地址 - BindAddressIPv4 - 但是操作不正确或者没有任何区别。

答案1

令人惊讶的是没有人注意到,但 66887 并不是一个有效的端口号。

https://stackoverflow.com/questions/113224/what-is-the-largest-tcp-ip-network-port-number-allowable-for-ipv4#113228

端口号是一个无符号的 16 位整数,因此为 65535。

端口的有效范围是 0-65535。
由于您指定了无效端口 66887,大多数操作系统会将其截断为 1351:

[root@f ~]# tcpdump -qnn host 8.8.8.8 & telnet 8.8.8.8 66887
[1] 4054
Trying 8.8.8.8...
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:30:56.175482 IP 10.0.0.42.60280 > 8.8.8.8.1351: tcp 0

或者用 C 语言:

[root@f ~]# cat > 16.c << EOF
> #include <stdio.h>
> #include <stdint.h>
> int main(void) {
>  uint16_t port=66887;
>  printf("%d\n",port);
>  return 0;
> }
> EOF
[root@f ~]# gcc -o 16 16.c
16.c: In function ‘main’:
16.c:4: warning: large integer implicitly truncated to unsigned type
[root@f ~]# ./16
1351

答案2

您需要在 openvpn 服务器上转发端口。

我不知道 ufw 命令,但是使用 iptables,命令将是(10.8.0.6 是连接到 VPN 时您的机器的 IP,66887 是转发的端口):

iptables -t nat -A PREROUTING -p tcp --dport 66887 -j DNAT --to 10.8.0.6:66887
iptables -t nat -A PREROUTING -p udp --dport 66887 -j DNAT --to 10.8.0.6:66887

相关内容