目录
摘要:
socat
代理,可以在客户端和服务器之间转发网络流量,允许用户通过它来连接到远程服务器或服务。
适用场景:
A与B网络相通,B与C网络相通,A与C网络不通。
客户端无法直接连接到服务器,可以将请求发送到socat代理服务器,socat代理将客户端的请求转发到服务器。
代理配置:
1.下载socat
mkdir /home/socat && cd /home/socat
wget http://www.dest-unreach.org/socat/download/socat-1.7.4.4.tar.gz
2.编译安装
tar zxf socat-1.7.4.4.tar.gz
cd /home/socat/socat-2.0.0-b9
vim nestlex.c 在前面加入 #include "stddef.h"
./configure --disable-fips
make && make install
3.运行socat
nohup socat -d -d -lf /var/log/socat.log TCP4-LISTEN:端口号,bind=IP地址,reuseaddr,fork TCP4:IP地址:端口号 >/dev/null 2>&1 &
#-d -d 参数来增加调试信息的输出
#-lf /var/log/socat.log :指定日志位置
#TCP4-LISTEN:为监听端口
#bind:为监听本机ip
#fork:转发的协议和目的地址,允许 socat 接受多个并发连接。
#>/dev/null 2>&1:确保了所有的 stdout 和 stderr 信息都被丢弃
4.查看socat运行状态
ps aux | grep socat
5.编写监听脚本,使socat进程持续运行
vim check.sh
#!/bin/bash
# 检查第一个 socat 进程是否在运行,如果不是,就启动它。
pgrep -f "TCP4-LISTEN:端口号" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Starting socat for port 8443..." >> /var/log/socat.log
/usr/bin/nohup /usr/local/bin/socat -d -d -lf /var/log/socat.log TCP4-LISTEN:端口号,bind=IP地址,reuseaddr,fork TCP4:IP地址:端口 >/dev/null 2>&1 &
fi
crontab -e
#加入定时计划任务
6.客户端发起测试
telnet 代理服务器IP地址 端口
netstat -anpt
#查看端口是否建立连接
#也可在代理服务器上进行抓包,查看是否成功转发请求