树莓派硬件类型:3B+
cpu架构:aarch64_cortexr-a53
镜像:brcm2710
烧入镜像:balenaEtcher
备份、还原镜像:Win32DiskImager(该软件备份的镜像比较大,会备份整个SD卡,16GB)
远程登陆:PuTTy
传输文件:WinSCP
树莓派SD卡扩容:Linux下gparted,原始openwrt系统安装后内存为128MB。
下载:https://downloads.openwrt.org/snapshots/targets/brcm2708/bcm2710/
使用balenaEtcher烧入SD卡即可。此时是能够使用显示器显示pi的命令行,必须在启动pi之前接上显示器。只有在完成pi的网络配置之后,才能使用putty远程登陆。
下载镜像名为:openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz
(1)网络配置:
修改文件:/etc/config/network
web界面配置远程登陆:设定用户名、密码,用于在putty上远程登陆。配置后可使用putty远程登陆,可以上网。
(非必要)nps client(树莓派)端口开放:在web界面中设置Network> Firewall> Traffic Rules> Open ports on router
(2)wifi配置:
修改文件:/etc/config/wireless,配置后可连接wifi。
修改network配置:
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fdce:2e49:45c9::/48'
config interface 'lan'
option type 'bridge'
option proto 'static'
# 设置路由器内网的IP,也是web界面登陆地址
option ipaddr '192.168.11.11'
option netmask '255.255.255.0'
option ip6assign '60'
# 广域网协议
config interface 'wan'
option proto 'dhcp'
option ifname 'eth0'
option ipv6 'auto'
网络配置完成后,需要reboot或者重启网卡(/etc/init.d/network reload)。
(关机命令:kill –USR1 1)
(3)web界面设置:
(4)wireless配置:
config wifi-device 'radio0'
option type 'mac80211'
option channel '36'
option hwmode '11a'
option path 'platform/soc/3f300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1'
option htmode 'VHT80'
#启动wifi
option disabled '0'
#配置wifi
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'OpenWrt_1'
option encryption 'psk2'
option key '123456789'
(1)需要配置的文件:
第三方镜像源:/etc/opkg/distfeeds.conf
默认镜像源:/etc/opkg.conf——这个可以不用修改,反正官网下载都很慢
(2)具体配置:
直接修改/etc/opkg/distfeeds.conf,替换成中科大镜像.
src/gz openwrt_core http://mirrors.ustc.edu.cn/lede/snapshots/targets/brcm2708/bcm2710/packages
src/gz openwrt_kmods http://mirrors.ustc.edu.cn/lede/snapshots/targets/brcm2708/bcm2710/kmods/4.19.69-1-75a2a48da3e9489814ae927d97f255a8
src/gz openwrt_base http://mirrors.ustc.edu.cn/lede/snapshots/packages/aarch64_cortex-a53/base
src/gz openwrt_luci http://mirrors.ustc.edu.cn/lede/snapshots/packages/aarch64_cortex-a53/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/lede/snapshots/packages/aarch64_cortex-a53/packages
src/gz openwrt_routing http://mirrors.ustc.edu.cn/lede/snapshots/packages/aarch64_cortex-a53/routing
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/lede/snapshots/packages/aarch64_cortex-a53/telephony
(1)查看安装的软件,命令:opkg list-installed
python:用于后期编写脚本
命令:
opkg update
opkg install python3
opkg install python-pip
(2)vsftpd 服务器:在PC使用WinSCP给树莓派传输文件。
命令:
opkg install vsftpd openssh-sftp-server
/etc/init.d/vsftpd enable
/etc/init.d/vsftpd start
WinSCP登陆界面配置:
(3)redsocks代理:这个在后面会详细说明,这里还有一些必备软件库没装。
命令:
opkg install redsocks
(注意:安装redsocks2行不通,在brcm2710版本的镜像不存在redsocks2)
(1)nps使用参考网址:https://github.com/cnlh/nps
(2)nps release版本下载网址:https://github.com/cnlh/nps/releases
(3)nps直接使用release安装,由于使用git下载太慢。
(4)nps在Linux和OpenWrt上运行的版本不同:
树莓派:使用linux_arm64
Linux:使用linux_amd64
使用WinSCP将nps的server程序上传到阿里云的ubuntu,进入nps server文件夹,使用chmod增加nps的执行权限。
命令:./nps start
这里配置的云服务器端口是:阿里云平台的ubuntu,不是nps服务端的代码。
目的:开启相应的nps服务器需要的端口。需要开启的端口如下:
(1)nps web:8080
(2)nps client:8284
(3)socket5代理端口:8888、9999
下面给出阿里云搭载的unbutu开启端口流程:实例->更多->网络和安全组->安全组配置
(1)在nps的web端配置客户端的密钥
(2)在nps的web端启用socket5代理:
(注意:需要在云端服务器上开启端口:8888、9999,给nps client的socket5提供端口)
(3)启动nps客户端:(在树莓派上操作,nps客户端为:linux_arm64_client.tar.gz)
先进入客户端的文件夹,使用chmod 给npc赋予执行权限(命令:chmod +x npc)
命令:./npc –server=服务器IP:8284 –vkey=密钥
(注意:这里的端口一定是8284,与云端服务器开放的client端口一致,使用命令ps,查看后台进程)
树莓派必备软件:autoconf 、automake 、libtool 、libevent-dev、 g++(这些软件,在手动安装redsocks时,才需要自己安装,使用自动安装则不许需要)
安装:使用中科大镜像源:先更新软件列表opkg update
命令:opkg install redsocks
注意:安装redsocks之后,redsocks的启动文件位置在:/usr/sbin/redsocks,这里和Linux下的redsocks存放位置不同。
redsocks代理的配置文件:/etc/redsocks.conf
目前只配置redsocks:这是socket5代理,不需要配置redudp。
base {
//不开启日志
log_debug = off;
log_info = on;
log = "syslog:local7";
daemon = on;
redirector = iptables;
}
redsocks {
//pi的本地IP:使用ifconfig,获取eth0网卡的IP即可(这一步是错的)。
//这里使用0.0.0.0 表示:监听所有的接口,这个值默认为127.0.0.1(这个值也可以)
//开放端口12345:不需要手动配置
local_ip = 0.0.0.0;
local_port = 12345;
//nps服务器IP,需要在socket5代理中,配置相应端口:9999,这个客户端的pi在内网
ip = 服务器IP;
port = 端口;
//代理类型为socket5
type = socks5;
}
确保所有外部连接wifi的设备,所有传输数据均能够通过pi,访问到nps的socket5代理。这里需要设置防火墙开放端口、传输协议、代理哪些网段传输的数据。(不需要在pi的web界面配置防火墙的端口)
(1)安装iptables:
命令:
opkg install iptables
(2)使用iptables设置防火墙:
命令:
iptables -t nat -N REDSOCKS
# PREROUTING:重定向的名单,走redsocks代理
iptables -t nat -A PREROUTING -i br-lan -p tcp -j REDSOCKS
iptables -t nat -A PREROUTING -i br-lan -p udp -j REDSOCKS
# REDSOCKS:不重定向名单,不走redsocks代理
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
# 此处的192.168.8.101/24,是web界面中获取的IP,这个IP会变化
iptables -t nat -A REDSOCKS -d 192.168.8.101/24 -j RETURN
iptables -t nat -A REDSOCKS -d 10.8.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# Redirect all kinds of traffic
#设置pi上的转发端口12345,不需要手动开启,和redsocks.conf中配置的端口一样
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A REDSOCKS -p udp -j REDIRECT --to-ports 12345
(3)启动:
(需要使用ps提前看看redsocks是否启动,若重复启动则无法重复启动
错误:1571024202.303121 err redsocks.c:1390 redsocks_init_instance(...) bind: Address in use)
成功启动时,没有任何提示
命令:/usr/sbin/redsocks -c /etc/redsocks.conf
使用命令ps,查看是否启动成功:
至此,完成pi上的socket5代理设置,已经可以使用。将PC连接pi的wifi,之后就可以使用工程助手,实现远程登陆内网PLC。
丢包:TCP隧道中,存在丢包现象。Socket5代理不存在丢包现象。
传输速度慢:(推测)可能是租借的服务器带宽小的问题——因为租借的是学生服务器,后期可以用其他带宽大的服务器来测试传输速度的问题。
欢迎各位关注个人微信公众号(都市扫地僧),CSDN登陆较少。