...
socat TCP4-LISTEN:www TCP4:www.domain.org:www
安装一个简单的TCP端口转发器。使用TCP4-LISTEN,它会侦听本地端口“www”,直到连接进入,接受它,然后连接到远程主机(TCP4)并开始数据传输。它不接受第二个连接。
socat -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,su=nobody,fork,range=10.0.0.0/8,reuseaddr \
TCP4:www.domain.org:80,bind=myaddr2
TCP端口转发器,每一侧绑定到另一个本地IP地址(绑定)。此示例通过在每个accept()之后分叉新进程来处理几乎任意数量的并行或连续连接。它在分叉后向用户提供了一点安全保障;它只允许来自私有10网络(范围)的连接;由于reuseaddr,它允许在主进程终止后立即重启,即使某些子套接字没有完全关闭。使用-lmlocal2,socat会记录到stderr,直到成功到达accept循环。进一步的日志记录将定向到具有local2设施的syslog。
socat TCP4-LISTEN:5555,fork,tcpwrap=script \
EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr
一个简单的服务器,接受连接(TCP4-LISTEN),fork是每个连接的新子进程;每个孩子都充当单一接力。客户端必须匹配/etc/hosts.allow和/etc/hosts.deny中守护进程名称“script”的规则,否则将被拒绝访问(请参阅“man 5 hosts_access”)。对于EXEC'uting程序,子进程chroot到/ home / sandbox,su到用户沙箱,然后启动程序/ home / sandbox / bin / myscript。 Socat和myscript通过伪tty(pty)进行通信; myscript的stderr被重定向到stdout,因此它的错误消息通过socat传输到连接的客户端。
socat EXEC:"mail.sh target@domain.com",fdin=3,fdout=4 \
TCP4:mail.relay.org:25,crnl,bind=alias1.server.org,mss=512
mail.sh是一个与socat一起发布的shell脚本,它实现了一个简单的SMTP客户端。它被编程为在其FD(3)和4(out)上“说”SMTP。 fdin和fdout选项告诉socat使用这些FD与程序进行通信。因为mail.sh继承stdin和stdout而socat不使用它们,所以脚本可以从stdin读取邮件正文。 Socat使alias1成为您的本地源地址(bind),关心正确的网络线路终端(crnl)并且每个数据包发送最多512个数据字节(mss)。
...