trojan 443端口被封的简单解决思路

最近trojan的443端口总是被封,看了下网上的的很多文章,提供的思路很多。

简单归纳以下几点:

  1. 伪装成正常网站,允许搜索引擎爬虫抓取。
  2. Nginx分流。
  3. 上cdn。
  4. 换端口。

实验环境

  • centos 7
  • 使用 https://github.com/Jrohy/trojan 脚本一键搭建的trojan

使用iptables nat端口转发

就我目前使用来看,trojan最多被封端口,ip好像没有太大问题。上面哪些方法懒得搞,直接一条iptables解决问题 。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 将40000~50000的端口流量转发到443端口
iptables -t nat -A PREROUTING -p tcp --dport 40000:50000 -j REDIRECT --to-ports 443
# 将40000~50000的端口流量转发到443端口 iptables -t nat -A PREROUTING -p tcp --dport 40000:50000 -j REDIRECT --to-ports 443
 # 将40000~50000的端口流量转发到443端口

iptables -t nat -A PREROUTING -p tcp --dport 40000:50000 -j REDIRECT --to-ports 443   

使用nat转发流量,在本机上是不会监听端口的,也就是netstat看不到。

执行之后就可以客户端使用40000至50000的任意端口和trojan通信了。

注意:很多vps需要在控制台放行端口

配合客户端的订阅更新实现“伪动态端口”

写一个

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
# 生成的订阅文件放在网站根目录下
filePath='~/www/vmess'
# 随机生成40000~50000之间的一个随机数
randPort=$((RANDOM % 10000 + 40000 ))
# 下面的是我的trojan节点信息
echo -e \
"
trojan://nsTcmFBI@domain.com:443#HK1
trojan://MTYqeRsx@domain.com:443#HK3
trojan://BAuSxaiw@domain.com:443#HK0
trojan://GwZOlMiB@domain.com:443#JP1
" \
| sed "s/443/$randPort/g" | base64 > $filePath
# 将更换端口后的节点信息base64写入文件
#!/bin/bash # 生成的订阅文件放在网站根目录下 filePath='~/www/vmess' # 随机生成40000~50000之间的一个随机数 randPort=$((RANDOM % 10000 + 40000 )) # 下面的是我的trojan节点信息 echo -e \ " trojan://nsTcmFBI@domain.com:443#HK1 trojan://MTYqeRsx@domain.com:443#HK3 trojan://BAuSxaiw@domain.com:443#HK0 trojan://GwZOlMiB@domain.com:443#JP1 " \ | sed "s/443/$randPort/g" | base64 > $filePath # 将更换端口后的节点信息base64写入文件
#!/bin/bash

# 生成的订阅文件放在网站根目录下
filePath='~/www/vmess'

# 随机生成40000~50000之间的一个随机数
randPort=$((RANDOM % 10000 + 40000 ))   

# 下面的是我的trojan节点信息
echo -e \
"
trojan://nsTcmFBI@domain.com:443#HK1
trojan://MTYqeRsx@domain.com:443#HK3
trojan://BAuSxaiw@domain.com:443#HK0
trojan://GwZOlMiB@domain.com:443#JP1
" \
| sed "s/443/$randPort/g" | base64 > $filePath

# 将更换端口后的节点信息base64写入文件

这是一个很简单的shell脚本实现,通过生成随机数把原本的节点信息进行替换再base64编码变成客户端订阅可接受的格式,最后将这个订阅放在网站目录下。

crontab定时任务更新订阅节点信息

把上面的这个脚本放到 /usr/bin/ 目录下,并添加可执行权限。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[root@VM-4-13-centos ~]# chmod +x /usr/bin/vmess.sh
[root@VM-4-13-centos ~]# crontab -l
1 * * * * /usr/bin/vmess.sh
[root@VM-4-13-centos ~]# chmod +x /usr/bin/vmess.sh [root@VM-4-13-centos ~]# crontab -l 1 * * * * /usr/bin/vmess.sh
[root@VM-4-13-centos ~]# chmod +x /usr/bin/vmess.sh 
[root@VM-4-13-centos ~]# crontab -l
1 * * * * /usr/bin/vmess.sh 

客户端添加订阅

这里以小火箭为例,其他都差不多。

ok,每次刷新订阅都是不同的端口。最简单的方式实现动态端口!

2023年01月16日补充:自动更新订阅一键脚本

最近很多人加我好友,询问关于配置的问题。就写了个一键脚本方便大家部署。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd /var/tmp/ && rm -f vmess.sh && wget https://zgao.top/download/vmess.sh && chmod +x vmess.sh
cd /var/tmp/ && rm -f vmess.sh && wget https://zgao.top/download/vmess.sh && chmod +x vmess.sh
cd /var/tmp/ && rm -f vmess.sh && wget https://zgao.top/download/vmess.sh && chmod +x vmess.sh

然后编辑vmess.sh

然后执行

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./vmess.sh
./vmess.sh
./vmess.sh

就可以了!

赞赏

微信赞赏支付宝赞赏