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

相关推荐

  • centos 7 NTP 内网时间定时同步

    一、环境 二、ntp安装服务 server服务器配置: client服务器配置:(如果有多台client服务器,亦可如此配置) 四、启动NTP服务&开机启动设置(包括server服务器和client服务器) 五、server服务器防火墙配置 六、client服务器手动从server服务器进行时间同步 在server服务器上执行date命令,查看时间 …

    2023年6月14日
    85200
  • 设备 eth0 似乎不存在, 初始化操作将被延迟

    今天将eth0文件编辑好之后,不管是重启network还是重启电脑都没用,一直显示个eth1,我就很纳闷,明明没有eth1这个文件,eth1到底从哪里来的,网上好多方法都试过了还是不行,什么删除/etc/udev/rules.d/70-persistent-net.rules这个文件,然后重启电脑,没用!关闭NetworkManager服务,没用!有的甚至说…

    2023年3月2日
    88800
  • Windows 10 共享打印机出现0x00000709报错

    在共享端主机上进行操作 新建记事本文档,输入如下内容: 然后保存,修改文件扩展名为reg,比如1.reg,然后双击这个文件导入注册表即可解决问题。

    2022年12月13日
    1.0K00
  • Linux 图片批量压缩工具 ImageMagick

    一个比较好用命令行下可以使用的,强大的免费图片工具 ImageMagick. 安装完成。

    2022年7月28日
    1.5K00
  • 编译安装python3.10,使用ansible管理windows

    前言 以下适用于CentOS7.9,因为ansible又是由python编写的,而yum源仅能下载到python3.6.8。ansible for windows是2019年推出的,需要用到的高版本ansible和插件,所以需要更新到python3.8以上版本才能支持,否则会运行会出现各种错误。 0.设置yum为阿里源 1.准备安装 2.下载安装python…

    2023年2月13日
    1.1K00

发表回复

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

在线咨询: QQ交谈

邮件:712342017@qq.com

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

关注微信