dream/ 十二月 13, 2018/ linux, 嵌入式, 服务器, 树莓派, 网络/ 0评论

本文介绍了在android或ios通过热点组建局域网,并通过termius进行端口转发以通过外网访问热点局域网内服务器,即内网穿透,的过程。

一.环境

安装有termius的android手机或iphone手机,一台连接到手机热点的服务器(本文使用树莓派3B+),一台有独立ip且运行Linux的云服务器。

二.介绍

通过termius来ssh连接到云服务器,并进行远程端口转发,以使服务器的9999端口的流量转发到本地树莓派的8123端口,从而实现从服务器ip:9999直接访问本地树莓派8123端口。

三.步骤

1.树莓派开启服务器进程,并连接到手机热点。同时确定树莓派ip地址,本文中为192.168.43.144。

2.手机端浏览器访问192.168.43.144:8123,确定网页可以正常访问。

3.手机端安装termius,并添加服务器,添加端口转发。(这一步等价于在树莓派开一个终端ssh -R 0.0.0.0:9999:localhost:8123 root@云服务器ip。)

在主机(host)选项卡中添加新主机(New host),云服务器和树莓派。必填项:主机名或IP地址(Hostname or IP address),SSH的用户名(Username)和密码(Password)。

在端口转发(Port forwarding)选项卡中添加新规则(New rule),类型(Type)选择远程端口转发(Remote Rule),远程主机(Host from)选择云服务器,本地端口(Port to)为8123,本地主机(Host to)为192.168.43.144,远程端口(Port from)为9999,地址(address)填0.0.0.0以使所有网络都能访问。

4.远程连接至云服务器,修改服务器设置以打开端口。并重启sshd服务。

修改云服务器端/etc/ssh/sshd_config加入GatewayPorts yes。

sudo echo "GatewayPorts yes" >> /etc/ssh/sshd_config

并设置iptables开放9999端口。

iptables -A INPUT -p tcp --dport 9999 -j ACCEPT

重启sshd服务。

service sshd restart

四.可能遇到的问题

1.服务器本地可以访问,但外网ip无法访问。

此时netstat -lnp显示的本地地址为127.0.0.1 9999而非 0.0.0.0 9999。

解决方案:

修改云服务器端/etc/ssh/sshd_config加入GatewayPorts yes

2.其他问题通过检查各项配置来依次排除。

比如在服务器端wget localhost:9999 和wget 外部ip:9999 来判断内外网能否正常访问。

在服务器端iptables -L -n来判断对应的端口开放策略是否合适。

在服务器端netstat -lnp来检查开放的网络端口和对应的ip。

参考链接:

https://gist.github.com/suziewong/4413491

用ssh解决大局域网反向端口转发问题

点击数:669

Share this Post

说点什么

avatar
300
  订阅  
提醒