0.遇见问题

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

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

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

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

  • 端口转发

1.解决问题

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

首先我们设置我们nginx配置文件让其监听其他端口
配置文件在:
/usr/local/nginx/conf/vhost/yuaneuro.cn.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,可更具实际调整

这样问题完美解决!

本文作者:Author:     文章标题:两程序共用一个端口冲突解决方法
本文地址:https://yuaneuro.cn/archives/40.html     
版权说明:若无注明,本文皆为“yuaneuro的小站”原创,转载请保留文章出处。
Last modification:June 19th, 2020 at 07:04 pm