![我需要在 OpenVPN 服务器上打开特定端口来传输 torrent 流量吗?](https://linux22.com/image/1465809/%E6%88%91%E9%9C%80%E8%A6%81%E5%9C%A8%20OpenVPN%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%89%93%E5%BC%80%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3%E6%9D%A5%E4%BC%A0%E8%BE%93%20torrent%20%E6%B5%81%E9%87%8F%E5%90%97%EF%BC%9F.png)
如果我从 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 并不是一个有效的端口号。
端口号是一个无符号的 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