0.遇见问题

最近在我服务器上使用openvpn搭建了云免服务(什么是云免?这里不方便说,可自己或私聊我)使用了HTTP转接的方法。(具体原理不方便说)

搭建教程:点我 (手动狗头)

但是出现了一个问题,HTTP转发程序由于里面写死了,只能将8080端口的流量转发到443端口,正好是openvpn的端口(原因是这几个端口不容易被封)

众所周知,HTTPS的端口就是443,和openvpn的端口重复了,这就会导致两者只能运行一个,这怎么可以,于是我想到了一个办法:

  • 端口转发

1.解决问题

  • 主要思路:我们可以将nginx的443端口修改成别的端口,然后使用iptables将外部流量443端口的流量转发到我们修改的端口

首先我们设置我们nginx配置文件让其监听其他端口
配置文件在:
/usr/local/nginx/conf/vhost/yuaneu.ro.conf

将这里随便改一个端口然后重启nginx,这时我们的nginx的https就会监听你修改的端口。

然后我们使用iptables进行端口转发
关于iptables的详细使用方法请看我之前的文章

刚开始我是这样配置的:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 1024

(将所有流量从1024端口都转发到443端口)
nginx和openvpn虽然不冲突了,但是使用openvpn连接时只能访问网站,原因出在了吧所有流量都进行了转发,而我们要转发的仅仅时外部访问网站的流量,而不是本地的流量

所以修改为:

iptables -t nat -A PREROUTING -d xxx.xxx.xxx.xxx -p tcp --dport 443 -j REDIRECT --to-port 1024

(只将外部流量从1024端口都转发到443端口)
-d后的参数时本地网卡的ip,可更具实际调整

这样问题完美解决!

最后修改:2020 年 06 月 19 日
如果觉得我的文章对你有用,请随意赞赏