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

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

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

简单归纳以下几点:

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

实验环境

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

使用iptables nat端口转发

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

 # 将40000~50000的端口流量转发到443端口

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

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

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

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

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

写一个

#!/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/ 目录下,并添加可执行权限。

[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日补充:自动更新订阅一键脚本

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

cd /var/tmp/ && rm -f vmess.sh && wget https://zgao.top/download/vmess.sh && chmod +x vmess.sh

然后编辑vmess.sh

然后执行

./vmess.sh

就可以了!

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

27条评论

匿名 发布于10:40 上午 - 3月 20, 2024

你好,使用你的脚本会生成一个 http://127.0.0.1:8060/vmess (127.0.0.1是举个例子),那么我用小火箭订阅的时候是使用生成的这个url吗?我试了一下好像连不上,还是说用 http://domain/vmess?希望博主解答一下,谢谢

    Zgao 发布于11:43 上午 - 3月 20, 2024

    可以看下安全组有没有放通端口

z 发布于3:25 上午 - 11月 25, 2023

你好,这种方式不太安全啊,别人知道了你的订阅地址。就能获取到所有节点的信息了。有什么办法保证安全性呢?

虚心请教 发布于9:40 下午 - 10月 3, 2023

大佬,请问这和换端口有什么区别吗?我实际使用的是40000端口,如果40000端口也被封了,下一步不就该封整个ip了吗?难道使用trojan可以让gfw只封端口,不封ip?

    匿名 发布于10:42 下午 - 10月 6, 2023

    目前来看trojan基本上都是被封端口

111 发布于10:58 上午 - 6月 29, 2023

小火箭订阅的节点链接还是原先的地址嘛

    Zgao 发布于2:58 下午 - 6月 29, 2023

    伪动态订阅链接

匿名 发布于8:39 上午 - 6月 16, 2023

作者的方法很好用,就是感觉http不太安全,所以我自建了https用nginx实现刷新端口,另外之前一开始使用Debian操作没有成功,后来仔细看了文章发现用的是centos,重装系统后运行代码立马就成功了,感谢

    11 发布于10:59 上午 - 6月 29, 2023

    小火箭订阅的地址还是原先的嘛 还是那个伪动态订阅链接

    z 发布于3:30 上午 - 11月 25, 2023

    你好,一般搜这个解决方案都是端口被封了,没办法在机器上建站https访问啊。你说的这种刷新端口方式跟答主的有什么区别呢?

      匿名 发布于4:15 下午 - 3月 1, 2024

      可以哒

noob 发布于6:15 下午 - 6月 14, 2023

iOS使用小火箭可以使用了,mac上面的clashX客户端怎么使用呀?把写在小火箭的订阅地址写在clash里不管用

匿名 发布于9:08 下午 - 2月 13, 2023

楼主这个稳定吗?会被封IP吗?

    匿名 发布于8:41 上午 - 6月 16, 2023

    封IP就套CDN使用Trojan-go

liuhui 发布于11:04 下午 - 2月 1, 2023

成功了。但是感觉不稳定,有时候不更新端口

fwsdf 发布于7:08 下午 - 1月 19, 2023

博主您好,我有一个疑问。
生成的链接相当于公开了,怎么保护链接的安全呢?

一个虚心学习的人 发布于6:19 下午 - 1月 5, 2023

这个很不错,能详解一下操作步骤就完美了。
1,请问很简单的shell脚本,是要在宝塔平台编辑进去吗?
2,生产的订阅地址是https://domain.com/vmess 吗?

chaoyue 发布于7:23 上午 - 12月 13, 2022

你好,第一步很有用,太感谢了,就是麻烦问一下第二步可以生成clash可以识别的订阅吗,如何尝试呢,网站根目录是指vps服务器的根目录吗,是新建一个~/www/vmess路径吗。

匿名 发布于8:04 上午 - 11月 29, 2022

请问v2ray的443端口被封,也可以采用同样的方法吗?
如果可以,跟Trojan比,有什么变化吗?
谢谢.

test 发布于10:48 上午 - 11月 24, 2022

iptables -t nat -A PREROUTING -p tcp –dport 40000:50000 -j REDIRECT –to-ports 14525因为我443被封了所以改用这个端口,其他都是按照大佬的参数设置的不知道是否可以生效。定时任务添加上去了

lighty 发布于10:07 下午 - 10月 30, 2022

要是用于端口转发的端口也被封了话,就换个端口继续用吗?

匿名 发布于4:07 下午 - 10月 19, 2022

不监听40000端口也可以吗,不监听不应该是不通的吗

    Zgao 发布于10:41 上午 - 10月 20, 2022

    通的,内部实现的转发。

    Yyankee 发布于6:06 下午 - 11月 9, 2022

    谢谢作者Zgao按照您的方法设置成功了,感谢无私分享,期间遇到复杂密码转base64后,V2rayN更新订阅后发现符号等密码有些被其他字符替换掉了。所以换成简单密码就没问题了。

匿名 发布于9:53 上午 - 10月 19, 2022

aliyun直接把我除了22和443全关闭了,自己一打开然后telnet通一下就自动又关了

meizi 发布于8:28 下午 - 10月 3, 2022

使用iptables nat端口转发
请问博主这个是直接连接到主机后在命令窗口输入接下来这段:iptables -t nat -A PREROUTING -p tcp –dport 40000:50000 -j REDIRECT –to-ports 443 吗,如果443端口已经被封了呢?还有就是为什么是40000-50000这个区间段呢?是手动改这个区间段的具体端口吗?

    Zgao 发布于10:39 上午 - 10月 7, 2022

    1、就是在443端口已经被封的情况下使用的,用iptables相当于内部转发。
    2、40000-50000端口是任意的,根据自己喜好随便改。
    3、是的,手动改成区间内具体端口。

回复 fwsdf 取消回复