使用 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

相关推荐

  • Docker常用命令

    列出所有容器ID 查看所有运行或者不运行容器 停止所有的container(容器),这样才能够删除其中的images: 如果想要删除所有container(容器)的话再加一个指令: 查看当前有些什么images 删除images(镜像),通过image的id来指定删除谁 想要删除untagged images,也就是那些id为的image的话可以用 要删除全…

    2022年11月19日
    38100
  • 内网穿透-linux NPS 服务端+客户端安装(详细版)

    一、下载安装包 1、官方下载 官方下载地址:https://github.com/ehang-io/nps/releases注意不要下错了,当前我下的版本为 v0.26.10 2、下载站下载 https://down.cnaaa.net/static/upload/other/20221220/1671519578293369.rar 二、服务端安装 访问公…

    2022年12月20日
    2.8K00
  • Linux下安装PHP

    安装准备 安装PHP所需的系统库,可以扩展php更多功能 手动安装libiconv-devel(编译三部曲) 默认yum源中缺少libiconv-devel软件包,需要编译安装,用于php的编码转换 下载安装 国内镜像地址:http://mirrors.sohu.com/php/ 下载编译文件 编译安装 配置编译脚本 看到如下提示,说明编译成功了 进行编译安…

    2022年6月25日
    49700
  • 网站发现打开是404报错

    现象:今日再使用IIS部署网站发现打开是404报错 分析过程:首先判断web下是否缺失文件,默认文档配置是否正确,PHP模块映射配置是否正确,PHP版本是否有故障。 发现php manager中php版本未能选择,重新选择php版本报错 解决办法:  打开处理程序映射,使php的处理程序为fastcgi,即可修复成功!!!

    2022年12月8日
    42800
  • ansible 用普通用户sudo 执行命令

    背景: linux 机器都禁止root用户远程直接登录,需要ansible切换用户来实现 配置 /etc/ansible/hosts [test] 192.168.55.65 ansible_ssh_user=vmuser ansible_ssh_pass=’112233′ ansible_become_pass=’778899′ 192.168.55.66…

    Linux系统 2023年2月6日
    53100

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信