nginx
主页 > 服务器 > nginx >

Nginx实现UDP四层转发的过程

2024-09-21 | 佚名 | 点击:

有2台云服务器,一台国内的、一台国外的,我本地网络直连国外的IP上VPN速率很慢。但是由于云服务器厂商有线路优化,国内的服务器到国外的还挺快的,并且我本地到国内服务器速率是OK的。那么想把这个UDP端口做下转发,这样能加速我的上网速率。

        说干就干。这个第一个想到很简单的Haproxy做4层代理,配置也很快,监听端口配置、转发目标端口、开放安全组即可。 但是我忽略了一个问题,找了半天发现Haproxy不能代理UDP流量。

        别的工具又不想尝试一遍了,所以索性选择了常见的Nginx进行4层代理,支持TCP、也支持UDP。

二、Nginx配置4层代理

 1、首先通过yum安装的nginx,默认不存在--with-stream的模块,需要执行安装命令

1

yum install nginx-mod-stream -y

  nginx -V 输出的是2(错误输出), 如果没有将2>&1的话,无法直接grep查找关键词。所以将错误输出导到标准输出,才能进行正常的grep. 这个需要注意下。 

1

nginx -V 2>&1  | grep -w -- '--with-stream'

  安装完毕之后查看nginx的模块列表,是否存在--with-stream:

 2、修改nginx.conf配置文件如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

http {

    # ...  HTTP  服务配置部分

}

stream {

    server {

        listen 500 udp;

        proxy_pass vpn_500;

    }

    upstream vpn_500 {

        server $ip:500;

    }

    server {

        listen 4500 udp;

        proxy_pass vpn_4500;

    }

    upstream vpn_4500 {

        server $ip:4500;

    }

}

3、nginx -t检查一下nginx.conf是否存在语法错误。 不存在错误,则nginx -s reload或者nginx启动即可

4、检查代理的UDP端口500和4500是否在监听

  查看监听端口,500和4500正在UDP进行监听,同时本地的VPN工具更换下IP即可测试正常连接。同时上网体验明显更好。

1

ss -lnup | grep 500

 三、总结

        Haproxy只支持TCP的4层转发以及7层HTTP的转发,但是不支持UDP流量转发。 Nginx支持HTTP、TCP4层、UDP4层。同时Nginx配置我们相对熟悉,如果Haproxy搞不定的事情,我们可以借助Nginx实现也是没问题的。

原文链接:
相关文章
最新更新