在上一篇HG6543C1(2) — 公网IP端口转发文章中,我分享了HG6543C1光猫如何利用其公网IP进行端口转发,今天折腾下frp网络透传。
想要在网关上部署应用,需要了解两件事情:
- 应用程序/脚本放在什么位置
- 怎样自启动
1. 存储空间
- 参考HG6543C1(1) — 电信宽带天翼网关登录到网关的Telnet,执行
mount 命令,查看一下哪些目录是可读写的,感觉/opt/upt/apps 目录和应用相关,故选择将应用放到这里。
$ mount
...
/dev/mtdblock6 on /flash type jffs2 (rw,relatime)
...
ubi2:Apps_ubifs on /opt/upt/apps type ubifs (rw,sync,relatime)
...
$ busybox fdisk -l
...
- HG6543C1是mips CPU,可以去GitHub/fatedier/frp下载编译好的frp的release包,我下载的是frp_0.43.0_linux_mips.tar.gz,
frps 解压后大约14M,拷贝到/opt/upt/apps/frps/frps ,新建/opt/upt/apps/frps/frps.ini 文件,内容如下:
vi /opt/upt/apps/frps/frps.ini
[common]
bind_port = 14038
bind_udp_port = 14038
vhost_http_port = 14039
vhost_https_port = 14040
log_file = /opt/upt/apps/frp/frps.log
log_level = info
log_max_days = 3
deltailed_errors_to_client = true
authentication_method = token
token = xsp&5@
allow_ports = 14041-14042,14044-14047
- 关于将
frps 文件传输到网关上,可参考文章使用nc命令通过网络传送文件,网关侧没有nc 命令,输入busybox nc 即可。
2. 自启动
- Linux启动时会自动执行
/etc/profile /etc/init.d/rcS 等脚本,在/etc/init.d/rcS 中发现,系统启动时会执行/flash/cfg/mirror.sh 该文件不存在,但所处的位置是可写的,则我们可以创建该文件,然后将启动脚本写在这个文件中。
$ cat /etc/init.d/rcS
...
if [ -f /flash/cfg/mirror.sh ]; then
echo "set mirror automatically"
/flash/cfg/mirror.sh &
fi
...
- 我们需要在网关上开启服务,则还需要设置网关对服务端口进行放行,这里可以采用HG6543C1(2) — 公网IP端口转发中的端口转发,将WAN口的数据转到LAN(192.168.1.1)上,也可以使用
iptables 命令进行端口转发或直接放行相关数据。
vi /flash/cfg/mirror.sh
#!/bin/sh
iptables -t nat -I PREROUTING -j DNAT -i ppp0 -p tcp -m tcp --dport 15038:15041 --to-destination 192.168.1.123:15038-15041
iptables -t nat -I PREROUTING -j DNAT -i ppp0 -p udp -m udp --dport 15038:15041 --to-destination 192.168.1.123:15038-15041
iptables -t filter -I FORWARD -j ACCEPT -d 192.168.1.123
iptables -t filter -I INPUT -j ACCEPT -p tcp -m tcp --dport 14038:14046
iptables -t filter -I INPUT -j ACCEPT -p udp -m udp --dport 14038:14046
/opt/upt/apps/frp/frps -c /opt/upt/apps/frp/frps.ini &
telnetd -p 18023 &
3. frpc
- 我有另一台电脑处在内网中,外界无法直接发起通信,可以用来测试frp内网透传,下载frp_0.43.0_windows_amd64.zip,编写配置文件。
vi frpc.ini
[common]
server_addr = xxxxx
server_port = 14038
token = xsp&5@
log_file = frps_{{.Envs.COMPUTERNAME}}.log
admin_addr = 127.0.0.1
admin_port = 12345
admin_user = asdrf
admin_pwd = 123456
[1_{{.Envs.COMPUTERNAME}}]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 14046
group = group1
group_key = key1
[2_{{.Envs.COMPUTERNAME}}]
type = tcp
local_ip = 127.0.0.1
local_port = 12345
remote_port = 14047
group = group2
group_key = key2
- 在CMD中执行
.\fprc -c frpc.ini 即可连接到frps,之后可以在任意电脑上使用window自带的远程桌面,远程该内网电脑,远程时计算机的地址填写:xxxxx:14046 ,xxxxx 是网关的(向日葵)域名或公网IP。frpc的管理网页被映射到frps的14047 端口,但网关未对WAN口的该端口进行放行,因此无法通过公网直接访问到frpc的管理网页,可以在网关的局域网中使用http://192.168.1.1:14047 进行访问。
|