shadowsocks:
1 2 3
| apt-get update apt-get install -y python-pip python-m2crypto pip install shadowsocks
|
Debian / Ubuntu:
1 2
| apt-get install python-pip pip install shadowsocks
|
CentOS:
1 2
| yum install python-setuptools && easy_install pip pip install shadowsocks
|
启动:
1
| ssserver -p 3000 -k password -m aes-128-cfb -d start
|
停止:
二级COW架设源码:https://github.com/cyfdecyf/cow
安装过程:
配置文件路径:
手工安装:
http://dl.chenyufei.info/cow/0.9.6/cow-linux64-0.9.6.gz
配置文件:
https://raw.github.com/cyfdecyf/cow/0.9.6/doc/sample-config/rc /root/.cow/rc
二级proxy部署 第二篇
上面写的是shadowsocks+cow实现二级proxy,接下来用一种简单的方式来实现二级proxy:
首先,一级proxy开启ssh服务。
二级proxy上用SSH端口转发:
1
| ssh -N -f -D 0.0.0.0:8888 username@ssh.malu.me
|
输入密码,这段命令意思是连接远程主机ssh.malu.me,然后在本地0.0.0.0地址、端口8888上开启socket5监听。
这样只要访问二级proxy上的socket5代理就能穿过两层代理了。
二级proxy部署 自动脚本
相关参数根据实际修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #!/usr/bin/expect -f set timeout 30 set host ssh.malu.me set name root set passwd userpasswd set port 22 set lisenport 8888 spawn sudo /etc/init.d/ssh start expect "*#" spawn killall ssh expect "*#" spawn ssh -NfR 1234:localhost:2222 $host -l $name -p $port expect { "yes/no" { send "yes\r"; exp_continue } "password:" { sleep 1;send "$passwd\r" } } expect "*#" spawn ssh $host -l $name -p $port expect { "yes/no" { send "yes\r"; exp_continue } "password:" { sleep 1;send "$passwd\r" } } expect "]$" sleep 1 send "ssh -N -f -D 0.0.0.0:$lisenport root@localhost -p1234\r" expect { "yes/no" { send "yes\r"; exp_continue } "password:" { sleep 1;send "$passwd\r" } } expect "]$" sleep 1 send "exit\r" expect eof exit
|
二级proxy部署 - 直连windows
windows下安装openssh
下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases
1.解压OpenSSH-Win64.zip到C:\Program Files\OpenSSH目录下,在DOS窗口进入OpenSSH目录
2.安装SSH host keys
3.打开防火墙22端口
4.安装SSHD服务并在服务窗口找到名为“SSHD”的服务,右键将其启动,并设置为随操作系统自动启动
也可以直接启动:
5.查看启动端口,如果需要监听外网,可以修改当前目录sshd_config文件
sshd_config:
内网穿透
根据二级proxy的原理,实质上是在两台服务器之间实现端口转发。
那么对应内网的服务器,只要能访问外网,那么利用SSH隧道端口映射就能实现内网穿透。
首先需要一台能远程登录的外网服务器。
然后内网服务器上执行:
1
| ssh -gCNfR 80:localhost:8080 ssh.malu.me -l root -p 22
|
g:在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
(-g参数如果不生效,其实这是ssh默认的安全策略所致,需要在服务端/etc/ssh/sshd_config 添加 gatewayports yes 重启sshd即可)
C:压缩数据传输。
N:不执行脚本或命令,通常与-f连用。
f:后台认证用户/密码,通常和-N连用,不用登录到远程主机。
-R 本地端口:目标IP:目标端口
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-L 本地端口:目标IP:目标端口
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
-D IP:port
指定一个本地机器 “动态的’’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.
serveo
官网:https://serveo.net
eg:
1
| ssh -R testname:80:localhost:80 serveo.net -o ServerAliveInterval=60
|
文档:https://www.jianshu.com/p/d0b3991a9ce1
zerotier
官网:https://www.zerotier.com
文档:https://www.zerotier.com/manual
国内服务:https://www.kancloud.cn/baoji\_enku/tx\_ip\_01/936021
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 启动 zerotier-one -d
# 获取地址和服务状态 zerotier-cli status
# 加入、离开、列出网络 zerotier-cli join <Network ID> zerotier-cli leave <Network ID> zerotier-cli listnetworks
# 重启 systemctl restart zerotier-one
|
报错:Cannot connect to Zerotier service
查看9993端口是否被占用
二级proxy部署 - 轻量级SSH安装
下载地址:https://matt.ucc.asn.au/dropbear/
dropbear的编译安装:
1 2 3
| # ./configure --prefix=/usr/local/dropbear --sysconfdir=/etc/dropbear --disable-pam # make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" # make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
|
加入环境变量:
1
| export PATH=/usr/local/dropbear/bin:/usr/local/dropbear/sbin:$PATH
|