我是否需要在 OpenVPN 伺服器上為 torrent 流量打開特定端口

我是否需要在 OpenVPN 伺服器上為 torrent 流量打開特定端口

如果我在 Mac (OSX 10.10) 上從 Tunnelblick 連接到連接埠 1194 上的 openvpn 伺服器,該如何確保 Transmission 使用的連接埠(例如 66887)對傳入連線開放?

目前設定:

連接到 Wifi 熱點(不受我的控制,無法存取路由器設定) 連接到 OpenVPN 伺服器(我可以完全控製設定)

傳輸“有效”,但速度很慢,並且連接埠在傳輸網路首選項中顯示為關閉。 openvpn VPN 連線對於所有標準 http 流量均正常運作。

Openvpn 正在遠端 Ubuntu 伺服器上執行。我嘗試使用 ufw 打開上述端口,但這沒有效果,我懷疑需要更深層的網路配置。

openvpn 版本是 OpenVPN 2.3.2 x86_64。

在這種情況下是否可以轉送連接埠 66887,或者我是否需要存取本機 LAN 路由器才能正常運作?

我嘗試透過首選項 plist 檔案更改傳輸的綁定位址 - 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

相關內容