今天的内容很简单,主要分享 2 个有用的 Linux 端口转发的工具,涨涨见识,主打一个不让脑子和手闲着,开整吧。
这里所说的端口转发和 nginx 之类的反向代理还是有些区别的,更加底层一点。
推荐你看一下 TCP/IP 协议相关的网络协议,反正也记不住,就只看看好了。
这 2 个工具分别是:
1,socat
,名字来由是 「Socket CAT」,其功能与有网络瑞士军刀之称的 netcat 类似,可以看做是 netcat 的加强版
2,netcat (nc)
,就是上面说的网络瑞士军刀了
为了验证端口转发,临时通过 docker 启动一个 nginx,并暴露 5000 端口。
docker run --rm -d -p 5000:80 nginx:alpine
netstat -antp | grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 706/sshd: /usr/sbin
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 19081/docker-proxy
tcp6 0 0 :::5000 :::* LISTEN 19087/docker-proxy
curl -i http://localhost:5000
首先需要安装 socat
yum install -y socat
socat -V
更多安装教程请移步:https://fasionchan.com/network/toolkit/socat/
假设,需要将本地 6000 端口转到指定的 5000 端口,利用如下 socat 命令
socat TCP-LISTEN:6000,fork TCP:127.0.0.1:5000
打开另一个终端窗口查看及验证
netstat -antp | grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 706/sshd: /usr/sbin
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 19081/docker-proxy
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 19183/socat
tcp6 0 0 :::5000 :::* LISTEN 19087/docker-proxy
curl -i http://localhost:6000
关闭转发,ctrl + c
或者 杀掉对应进程即可,上面 netstat 命令中也有对应的 PID 19183。
ps -ef | grep socat
root 19183 1264 0 14:34 pts/0 00:00:00 socat TCP-LISTEN:6000,fork TCP:127.0.0.1:5000
kill -9 19183
首先安装 nc
yum install -y nc
nc --version
更多安装教程移步:https://developnsolve.com/how-to-install-netcat-nc-on-linux
假设,需要将本地 6000 端口转到指定的 5000 端口,利用如下 nc 命令
nc -l -k -p 6000 -c "nc 127.0.0.1 5000"
同上,打开另一个终端.
netstat -antp | grep LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 706/sshd: /usr/sbin
tcp 0 0 0.0.0.0:5000 0.0.0.0:* LISTEN 19081/docker-proxy
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 19219/nc
tcp6 0 0 :::5000 :::* LISTEN 19087/docker-proxy
tcp6 0 0 :::6000 :::* LISTEN 19219/nc
curl -i http://localhost:6000
关闭端口转发同上,ctrl + c
或者 杀掉对应进程即可。
netstat -talnp
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 19219/nc
tcp6 0 0 :::6000 :::* LISTEN 19219/nc
kill -9 19219
今天介绍了 2 种方式实现 linux 网络端口转发,比较简单和实用,希望对你有所帮助。
本次的分享到此结束,希望对你有所帮助。
如果你对我分享的内容感兴趣,欢迎扫码关注公众号:新质程序猿,并设置星标,推送更实时哟!