使用 B VPS 中转 A VPS 流量

引言 由于某些不可抗力原因, 所处网络环境无法访问 A VPS, 因此 增加 能访问到的 B VPS 来中转流量到 A VPS me –x-> A VPS me <—-> B VPS <—-> A VPS 非内网穿透需求, A VPS 有公网ip, 可被公网直接发现 和使用某些客户端 配合 Cloudflare Proxy 类似 me(X Client) <—-> Cloudflare <—-> A VPS <—-> google.com me(X Client) <—-> 中转机 <—-> 落地机 <—-> google.com PS: 目前已知 Cloudflare 支持代理: HTTP/HTTPS, WebSocket 和 gRPC(HTTP/2) 但支持的端口有限, 详情请看 Cloudflare 文档 Nginx 流量转发 Nginx是非常强大的四层、七层反向代理软件,功能强大,在互联网上广泛应用。 本节介绍Nginx转发配置。

1. 配置 B VPS /etc/nginx/nginx.conf /etc/nginx/nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

# start: 转发
stream {
    server {
        listen B-VPS-端口号;  # 1-65535 的任意一个数字,无需与 A VPS 的端口号相同
        proxy_pass A-VPS-ip:A-VPS-端口号; # 用 A VPS ip 和端口号替换
    }
}
# end: 转发

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    ....
}
nginx -s reload
# 记得 B VPS 放行此端口 (B-VPS-端口号)
firewall-cmd --zone=public --add-port=8024/tcp --permanent
firewall-cmd --reload

也可以下方这么写 /etc/nginx/nginx.conf

# start: 转发
stream {
    upstream bi_remote_desk {
        # 转发 ip 和端口
        # 用 A VPS ip 和端口号替换
        server 10.10.10.10:3389;
    }
    server {
        # 监听端口
        # 1-65535 的任意一个数字,无需与 A VPS 的端口号相同
        listen 3389; 
        # 转发请求
        proxy_pass bi_remote_desk;  
    }
}
# end: 转发

可以同时配置多个 /etc/nginx/nginx.conf

# start: 转发
stream {
    upstream bi_remote_desk {
        # simple round-robin 转发IP和端口
        server 10.10.10.10:3389;
        #check interval=3000 rise=2 fall=5 timeout=1000;
        #check interval=3000 rise=2 fall=5timeout=1000
        #check interval=3000 rise=2 fall=5timeout=1000
        #check_http_send "GET /HTTP/1.0\r\n\r\n";
        #check_http_expect_alive http_2xxhttp_3xx;
    }
    server {
        listen 3389; ##监听端口
        proxy_pass bi_remote_desk;  #转发请求
    }
    upstream 214_ssh {
        server 10.10.10.10:22;
    }
    server {
        listen 105; ##监听端口
        proxy_pass 214_ssh;  #转发请求
    }
}
# end: 转发

2. 配置 A VPS

仅允许 B VPS ip 连接该服务器(A)的 32 端口, 当然也可以不做这步

firewall-cmd --permanent --add-source=B-VPS-ip/32
fireawll-cmd --reload

firewalld 流量转发 firewalld 是 CentOS7/8 默认的防火墙前端软件,绝大多数主机商提供的镜像都已经安装。 firewalld 转发的好处是 效率高, 直接在内核执行。 TODO: firewalld 流量转发 Q&A

Q: NAT 是什么 ?

使用 B VPS 中转 A VPS 流量

网络地址转换(英语:Network Address Translation,缩写:NAT;又称网络掩蔽、IP掩蔽)在计算机网络中是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。 1990年代中期,NAT是作为一种解决IPv4地址短缺以避免保留IP地址困难的方案而流行起来的。网络地址转换在很多国家广泛使用。所以NAT就成了家庭和小型办公室网络连接上的路由器的一个标准特征,因为对他们来说,申请独立的IP地址的代价要高于所带来的效益。 在一个典型的配置中,一个本地网络使用一个专有网络的指定子网(比如192.168.x.x或10.x.x.x)和连在这个网络上的一个路由器。这个路由器占有这个网络地址空间的一个专有地址(比如192.168.0.1),同时它还通过一个或多个因特网服务提供商提供的公有的IP地址(叫做“过载”NAT)连接到因特网上。当信息由本地网络向因特网传递时,源地址从专有地址转换为公用地址。由路由器跟踪每个连接上的基本数据,主要是目的地址和端口。当有回复返回路由器时,它通过输出阶段记录的连接跟踪数据来决定该转发给内部网的哪个主机;如果有多个公用地址可用,当数据包返回时,TCP或UDP客户机的端口号可以用来分解数据包。对于因特网上的通信,路由器本身充当源和目的。 流行在网络上的一种看法认为,IPv6的广泛采用将使得NAT不再需要,因为NAT只是一个处理IPv4的地址空间不足的方法。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/12226

(0)
凯影的头像凯影
上一篇 2024年6月28日 下午2:32
下一篇 2024年7月2日 下午4:23

相关推荐

  • Centos7 使用nvm配置 多Node.js环境

    背景 新项目 使用Node.js-v16.17.1 旧项目 使用Node.js- v14.18.0 【且依赖于node-saas模块,根据 node-sass 的官方文档,目前最新版本的 node-sass(即 v5.0.0)支持的 Node.js 版本范围是 Node.js 10.x、Node.js 12.x、Node.js 14.x。并没有明确支持 No…

    2023年5月10日
    1.3K00
  • 服务器卡死,重启报错: INFO: task blocked for more than 120 seconds

    问题:服务器负载很高,但是CPU利用率不高。服务器经常夯住,网站打不开,SSH连接非常不稳定,输入命令夯住。 重启服务器报错: INFO: task blocked for more than 120 seconds 问题原因:  默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写…

    2023年3月27日
    1.2K00
  • frp配置多端口内网穿透?frp多端口怎么配置?

    FRP内网穿透应用场景:本地Web服务外网访问、本地开发微信、本地联调支付宝\微信支付、TCP/UDP端口转发 在本机开发好的网站想让客户测试不在需要上传到服务器上面,使用FRP内外网穿透轻松解决;微信开发也不需要在上传到服务器,使用免费FRP内网穿透服务器帮您解决80端口问题,实现微信服务器直接访问到您本机web服务。 使用frp作为内网穿透的时候,有时候…

    2024年5月10日
    91100
  • Linux中route add命令的语法及使用!

      在Linux操作系统中,有许多常用的命令,这些命令都有着非常重要的作用,而且掌握命令也是每一个Linux运维工程师的必备技能之一。接下来,这篇文章主要为大家讲解一下Linux中route add命令的语法及使用,一起来学习一下吧!   route add命令用于将路由添加到Linux系统的路由表中。它定义了将数据包从系统发送到特定目的地的路径。   语法…

    2024年6月26日
    1.7K00
  • Centos7中搭建WebDav的服务

    一 什么是WebDAV 百度百科的定义:WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序Web Server直接读写,并支持写文件锁定(Lock…

    2023年3月9日
    1.2K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信