### 介绍
`购买的是拨号江苏服务器,但是仅提供一个远程端口,不提供其他端口映射,但是我们的爬虫是跑本机,所以必须要通过外网去连代理服务器,所以就考虑使用端口复用技术解决。`
### 准备工作
`端口复用软件`: `sslh`
`代理软件`: `v2ray`
 
### 拨号服务器,获取外网IP
```bash
adsl-start #拨号,不同提供商的命令不一样,有些提供商对命令进行了封装
```
 
### 服务器初始化
```bash
yum install epel-release -y #安装epel-release
```
 
### 用ssh去连拨号获取的IP
`执行这步是测试拨号IP是否有端口限制以及防止后面sslh端口复用失败而不能远程连接的问题。`
`如果成功执行下一步,失败排查下原因。`
 
### sslh
#### 安装
```bash
yum install sslh -y
```
 
#### 配置
```bash
vim /etc/sslh.cfg
```
```yaml
# This is a basic configuration file that should provide
# sensible values for "standard" setup.
verbose: false;
foreground: true;
inetd: false;
numeric: false;
transparent: false;
timeout: 2;
user: "sslh";
# Change hostname with your external address name.
listen:
(
{ host: "0.0.0.0"; port: "33890"; } #这里为拨号供应商映射的ssh端口(非22),所以端口复用需要使用和原理ssh端口号保持一致
);
protocols:
(
{ name: "ssh"; service: "ssh"; host: "localhost"; port: "22"; fork: true; }, #ssh协议包转发给22端口
{ name: "anyprot"; host: "localhost"; port: "27073"; } #其他协议包转发给27073(v2ray端口)
);
```
 
#### 修改ssh监听端口
```bash
vim /etc/ssh/sshd_config
```
```bash
Port 22 #修改原来的33890为22端口
...
```
 
#### 重启ssh和启动sslh
```bash
systemctl restart sshd&&systemctl start sslh #先重启sshd让其监听22,然后再重启sslh监听33890
systemctl enable sslh #配置开机启动
```
 
#### ssh测试重接供应商提供的远程主机和端口
`如果重连成功,说明sslh端口转发到ssh成功`
 
### V2ray
#### 安装
```bash
bash <(curl -L -s https://install.direct/go.sh)
```
#### 配置
```bash
vim /etc/v2ray/config.json
```
```yaml
{
"inbounds": [{
"port": 27073, //修改为上面sslh转发到的端口号
"listen": "127.0.0.1", //监听回环地址即可
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "62f8c0f5-69fa-41f8-a7b0-97d43014d478",
"level": 1,
"alterId": 64
}
]
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}
]
}
}
```
 
#### 启动
```bash
systemctl start v2ray #启动
systemctl enable v2ray #设置开机启动柜
```
 
#### 一键安装脚本
```bash
adsl-start&&bash <(curl -L -s https://files.ynotes.cn/biv2ray.sh)
```
 
### 测试V2ray客户端去连供应商提供的远程主机和端口
`如果连接成功说明远程端口复用成功,实现了通过供应商提供的远程端口提供代理服务和ssh服务的目的`