Menu Close

利用Nginx的stream模块进行端口转发并实现端口复用

前言

我们熟知的中转工具很多,常见的有如下,

目前gost和realm比较火,因为可以进行隧道中转,其实我们熟知的nginx也可以用于端口转发,今天我们就来看看。

安装nginx

  1. CentOS
  2. yum update
  3. yum install y nginx
  4. yum install nginxmodstream
  5. Ubuntu/Debian:
  6. apt update
  7. apt install nginx

查看stream模块,测试你的nginx是不是支持stream模块

nginx -V

出现这样的–with-stream字样,说明就是支持的!

修改nginx配置文件

找到/usr/local/nginx/conf/nginx.conf, 在events上面加入stream配置

  1. stream {
  2. upstream forward {
  3. # simple round-robin 转发IP和端口
  4. server 1.1.1.1:443;
  5. #check interval=3000 rise=2 fall=5 timeout=1000;
  6. #check interval=3000 rise=2 fall=5timeout=1000
  7. #check interval=3000 rise=2 fall=5timeout=1000
  8. #check_http_send “GET /HTTP/1.0\r\n\r\n”;
  9. #check_http_expect_alive http_2xxhttp_3xx;
  10. }
  11. server {
  12. listen 3389; ##监听端口
  13. proxy_pass forward; #转发请求
  14. }
  15. }

端口复用

  1. stream {
  2. upstream forward {
  3. # simple round-robin 转发IP和端口
  4. server 1.1.1.1:443;
  5. server 1.1.1.1:443;
  6. #check interval=3000 rise=2 fall=5 timeout=1000;
  7. #check interval=3000 rise=2 fall=5timeout=1000
  8. #check interval=3000 rise=2 fall=5timeout=1000
  9. #check_http_send “GET /HTTP/1.0\r\n\r\n”;
  10. #check_http_expect_alive http_2xxhttp_3xx;
  11. }
  12. server {
  13. listen 3389; ##监听端口
  14. proxy_pass forward; #转发请求
  15. }
  16. }

 

客户端配置

由于这样的配置,nginx知识起到转发流量的作用,所以在进行tls握手时,在填写客户端时,host或者sni处要填写你原来的域名,这样电脑才能知道是要跟哪台机器进行通讯。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注