一、流程图如下:
①:需要访问④的设备(没有对③④的直接访问权限),用ss客户端对②发起请求
②:固定ip的ecs,接受到①的数据请求后用NGINX转发到③,可以在这里对①的请求合法性做初步校验
③:固定ip的ecs,用白名单限制只接受②的ip访问;用ss服务器把收到的请求转发到④
④:被限制访问的服务器,只能接受③的访问
二、配置文件如下:
②中/etc/nginx/nginx.conf最外层增加配置
stream {
server {
listen 8001;
proxy_pass xx.xx.xx.xx:3344;
}
server {
listen 8002;
proxy_pass xx.xx.x.xx:3341;
}
server {
listen 8003;
proxy_pass 127.0.0.1:3001;
}
}
③中防火墙配置文件/etc/firewalld/zones/public.xml
放通任意ip访问服务器的22端口
③中ss服务器配置文件/etc/ss.json
{
"server":"0.0.0.0",
"server_ipv6":"[::]",
"server_port":3344,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"psd",
"timeout":120,
"method":"aes-256-cfb",
"protocol":"origin",
"protocol_param":"",
"obfs":"plain",
"obfs_param":"",
"redirect":"",
"dns_ipv6":false,
"fast_open":false,
"workers":1
}
三、涉及到的命令
②NGINX命令:
systemctl enable nginx.service设置开机启动
systemctl start nginx.service启动nginx服务
systemctl enable nginx.service设置开机自启动
systemctl disable nginx.service停止开机自启动
systemctl status nginx.service查看服务当前状态
systemctl restart nginx.service重新启动服务
nginx -t # 验证配置文件
nginx -s reload # 重新加载
nginx -s stop # 快速停止
nginx -s quit # 正常停止
nginx -c dir/nginx.conf # 指定配置文件路径
③防火墙命令 :
查看防火墙的状态的命令为:sudo systemctl status firewalld。
打开防火墙的方式有两种,一种是打开后重启会恢复回原来的状态,命令为:sudo systemctl start firewalld;另一种是打开后重启不会恢复到原来的状态,命令为:sudo systemctl enable firewalld,这种方式输入命令后要重启系统才会生效。
关闭防火墙的方式也有两种,和打开相对应,命令分别为
sudo systemctl stop firewalld
sudo systemctl disable firewalld。
③启动ss服务命令:
nohup ssserver -d start -c /etc/ss.json &