如果我在 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 不是有效的連接埠號碼。
連接埠號碼是一個無符號 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