Android端口转发
如上图所示,有一个Android设备,Android设备里面有主板,主板上有网络接口和Wi-Fi,网络接口通过网线连接了一个网络摄像头,这就跟电脑一样,电脑即可以通过网线接入一个网络,也可以同时用Wi-Fi接入另一个网络,这种情况下就会同时存在两个网络。假设我的Android设备连接了公司的Wi-Fi,分配到的ip是192.168.1.100,而我的电脑也连接了公司Wi-Fi,分配到的ip是192.168.1.101,此时我的电脑和Android设备都是同一样网段,所以我的电脑可以访问Android设备上Wi-Fi的ip,而Android设备上还有一个网络摄像头,它是通过网线和Android主板直接连接的,ip为192.168.2.100,这和我的电脑不是同一个网段,所以我的电脑无法通过192.168.2.100进行访问,这时就需要进行端口转发,比如网络摄像头的拉流地址为:rtsp://192.168.2.100:554/stream_1,这里的端口为554,则我们可以在Android中运行一个应用,让这个应用监听554端口,然后把554端口的请求转发给192.168.2.100:554。对于这样的需求,已经有开源的应用:https://gitee.com/daizhufei/FwdPortForwardingApp,这是我从Github上克隆的,所以大家也可以去Github上找官方的,搜索FwdPortForwardingApp
即可。该项目中已经打包有apk,在app目录中,直接下载安装即可,运行app,点击加号添加转发规则,截图如下:
如上图所示,在Rule Title中输入一个标题,这个可以随意填,在Protocol中选择要使用的协议,有TCP、UDP、BOTH三个选择,直接选BOTH即可包含TCP和UDP协议了,即使你只需要其中一个协议,也建议选择BOTH,反正你用不用都不影响。在From中,选择来源网络接口,比如wlan0为Wi-Fi网络接口,在端口处填入要监听的端口,比如554,在Target中填入要转发到的目标ip和端口,最后点击右上角的SAVE
即可。这里需要注意,From中的端口必须是1024-65535范围内的,所以,上图中我们填入的554是不合法的,比如改为5545,设置好之后,点击右上角的START
按钮即可,截图如下:
这样我们就可以在电脑上使用rtsp://192.168.1.100:5545/stream_1
进行拉流了,FwdPortForwardingApp
会自动把192.168.1.100:5545
的请求转发到192.168.1.200:554
。