0x00 惯例找起因
由于有需求访问自己在国内家里的局域网,然而家里穷,又不是专线,辣鸡移动又死活没法给公网IP,于是一个端口转发/映射实现的需求应运而生。本来以为 V2Ray自带的dokodemo-door可以直接拿来用,毕竟要过境访问,直接ssh tunnel或者ngrok之类估计效果不佳,所以又到了编程小白用奇技淫巧实现需求的时候(自己造轮子什么的多麻烦,反正要求是能通就行,求诸位dalao不要在评论去喷性能辣(逃(滑稽
0x01 实现
所以具体操作就是。。本地V2Ray正常配客户端,添加一个dokodemo-door的inbound把服务器的22端口映射到本地。然后本地再SSH Tunnel到映射到本地的远程22端口的端口。
(最近说话真的不知道为啥就是容易绕。。。勿怪)(反正会看我文章的估计也不会管前面的,都是来直接复制粘贴命令的吧(这么白的东西))
当然你也可以选择其他任何基于TCP的网络服务对外开放,比如ngrok一样可以达到向外端口映射的功能。(不用是因为1 配置麻烦 2 需要单独证书 3 停止开源了不清真(
不多说了直接丢 V2Ray 配置:
{
"protocol": "dokodemo-door",
"port": [forwarded_ssh_port],
"settings": {
"address": "[remote_host]",
"port": [remote_ssh_port],
"network": "tcp,udp",
"timeout":0
}
}
以及 SSH Tunnel 命令
ssh -C -f -N -R [remote_service_port]:0.0.0.0:[local_service_port] user@[local_host] -p [forwarded_ssh_port]
0x03 速度测试
user@local_host:~$ iperf3 -s -p 2526
user@local_host:~$ ssh -C -f -N -R 2526:0.0.0.0:2526 root@127.0.0.1 -p 2222
user@remote_host:~$ iperf3 -c 127.0.0.1 -p 2526 -R -n 100M -i 5
测试结果
测试环境:华东某省移动家宽20Mbps + DGCHOST 香港
Connecting to host 127.0.0.1, port 2526
Reverse mode, remote host 127.0.0.1 is sending
[ 4] local 127.0.0.1 port 55064 connected to 127.0.0.1 port 2526
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-5.00 sec 11.5 MBytes 19.3 Mbits/sec
[ 4] 5.00-10.00 sec 12.7 MBytes 21.4 Mbits/sec
[ 4] 10.00-15.00 sec 12.5 MBytes 21.0 Mbits/sec
[ 4] 15.00-20.00 sec 11.0 MBytes 18.4 Mbits/sec
[ 4] 20.00-25.00 sec 7.38 MBytes 12.4 Mbits/sec
[ 4] 25.00-30.00 sec 8.45 MBytes 14.2 Mbits/sec
[ 4] 30.00-35.00 sec 6.42 MBytes 10.8 Mbits/sec
[ 4] 35.00-40.00 sec 10.1 MBytes 17.0 Mbits/sec
[ 4] 40.00-45.00 sec 9.53 MBytes 16.0 Mbits/sec
[ 4] 45.00-50.00 sec 8.11 MBytes 13.6 Mbits/sec
[ 4] 50.00-51.25 sec 2.22 MBytes 14.9 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-51.25 sec 110 MBytes 18.0 Mbits/sec 0 sender
[ 4] 0.00-51.25 sec 102 MBytes 16.7 Mbits/sec receiver
iperf Done.
0x04 TODO
增加UDP支持