很热71

关于VPS防火墙配置与端口管理,这篇可能最接地气

Exness 推荐平台

入金门槛低,出金到账快,支持多种账户类型

FSA(塞舌尔)/FCA(英国) / CySEC(塞浦路斯) · 最低入金 $130
MoonlitPine
MoonlitPine 楼主
6 天前 490 8 1分钟 新汇友(注册会员) Lv.1 主题1 帖数7 积分1227 汇币749
1楼
说实话,论坛里聊VPS的帖子不少,但大多停留在“选哪家机房”、“延迟多少ms”这个层面。真正把防火墙和端口管理讲透的,我翻了几页没找到几个。今天不聊那些虚的,直接说我在Ubuntu 22.04上部署MT5 EA时,跟防火墙死磕出来的那点经验。
先说个最典型的坑:很多人EA挂不上,第一反应是代码逻辑问题,其实八成是VPS的入站规则把MT5的端口给堵了。MT5默认用的不是固定端口,而是
  • MetaTrader 5客户端连接服务器走的是[trade]端口,通常443或80,但VPS上你自己跑的EA如果开了WebRequest或者绑定了本地Socket,那端口就得自己管了。

我之前帮一个朋友调一个马丁策略的EA,他在VPS上开了个Webhook用来接收信号,结果死活连不上。我SSH上去一看,UFW防火墙默认策略是deny incoming,他压根没放行那个自定义端口。所以第一步,先搞清楚你的EA到底需要哪些端口——是只出站连接经纪商服务器,还是需要入站监听?前者基本不用管防火墙出站规则(默认允许),后者就必须显式放行。
具体操作,我习惯用UFW,比iptables直观太多。装好MT5的VPS,我一般这么配:

  • sudo ufw allow 22/tcp(SSH,千万别漏,不然断连就哭了)
  • sudo ufw allow 80,443/tcp(MT5连接经纪商主服务器,有些经纪商还用到8443,最好去官方文档查一下)
  • 如果EA开了WebRequest,比如要访问API获取行情,那得放行出站端口,UFW默认出站是allow的,但如果你改过默认策略,记得加sudo ufw allow out 8080/tcp之类的规则
  • 最后sudo ufw enable,然后sudo ufw status verbose确认规则生效

踩过的坑里,最恶心的是MT5的“允许WebRequest”列表。这跟防火墙是两码事,但很多人混在一起。你防火墙放行了8080,但MT5设置里没把API的URL加进白名单,照样连不上。而且这个列表是精确匹配域名的,别用IP,要写完整URL,比如https://api.xxx.com,末尾带不带斜杠都有讲究。我上次就是被这个卡了两小时,最后发现是URL里多了个空格。
再说说端口扫描的问题。VPS裸奔在公网上,每天被扫描是常态。我试过用fail2ban配合UFW,效果还行,但有个副作用——如果EA的登录频率太高,比如每次tick都触发一次重连,fail2ban可能会误封你的IP。我后来把maxretry调到了10,findtime设成600秒,才消停。如果你用的是Windows VPS,那更得注意,Windows防火墙默认对入站是拒绝的,但出站全放行,MT5的EA如果要用到本地回环地址127.0.0.1做Socket通信,记得在防火墙里加一条允许规则,不然程序跑起来没报错,但数据就是传不出去。
最后提一个容易被忽略的点:VPS提供商的安全组。有些云厂商(比如AWS、阿里云)除了系统防火墙,还有一层安全组策略。你在Ubuntu里把端口全放开了,但安全组没加规则,照样连不上。我踩过这个坑,当时折腾了半天UFW,最后发现是阿里云的安全组把入站端口给拦了。所以排查顺序一定是:先看云控制台安全组,再看系统防火墙,最后才看MT5自身的设置。
大概就这些。你们有没有遇到过那种“防火墙全关了还是连不上”的诡异情况?我最近在琢磨是不是MT5的UDP穿透问题,有经验的老哥来聊聊?

补充一句:UFW放行端口别只加TCP,UDP经常被忽略,EA的心跳包就是走UDP的,漏了照样连不上。
2 回复 复制 众裁0
#1
岁月静好
岁月静好 #2· 3 天前
3 天前
2楼
这个帖子把VPS防火墙讲得挺透,我补个点:UFW规则顺序很重要,allow规则要放在deny前面,不然后面加的会被默认策略吃掉。还有改完规则记得sudo ufw reload,别问我为啥知道。😂 另外可以加sudo ufw status numbered检查下规则顺序,排查时省事。
回复 复制 众裁0
3 天前 #2
林间漫步
林间漫步 #3· 3 天前
3 天前
3楼
说到UFW默认deny incoming这个坑,我上周刚踩过。EA开了本地Socket监听给信号源推流,防火墙没放行,日志里全是Connection refused。不过我觉得比起UFW,更推荐直接上Docker映射端口,隔离环境加规则管理一步到位,省得每次改规则都怕把SSH搞断。
回复 复制 众裁0
3 天前 #3
晚风拂柳
晚风拂柳 #4· 3 天前
3 天前
4楼
这帖子把UFW配置讲得真细,特别是"deny incoming默认策略"那段,我上次就是栽在这上面,EA的Webhook死活收不到信号。我自己也用的Ubuntu VPS,但后来改用iptables持久化规则了,重启不丢配置。另外建议加上sudo ufw logging on,排查端口问题时能少走弯路。
回复 复制 众裁0
3 天前 #4
CloudSurferr
CloudSurferr #5· 3 天前
3 天前
5楼
这个8443端口我还真没注意过,我用的经纪商文档只写了443,结果换服务器后EA死活连不上,是不是跟这个有关?现在看你这篇感觉我之前配置漏了点东西。
回复 复制 众裁0
3 天前 #5
码农小李
码农小李 #6· 前天 10:05
前天 10:05
6楼
核心问题是搞清楚EA是出站还是入站连接,再针对性配UFW。补充一下:查端口别只信文档,用netstat -tlnp看实际监听更准。另外WebRequest的URL白名单也要在MT5里同步设置,防火墙放行了但终端拦了照样白搭。
回复 复制 众裁0
前天 10:05 #6
小满清风
小满清风 #7· 前天 14:01
前天 14:01
7楼
我自己也试过UFW配置,但不少经纪商文档确实只写443,8443这个坑得实际抓包才能发现。你提到Webhook收不到信号那段,我上次也是栽在deny incoming上,后来直接改用Docker映射端口省心多了。
回复 复制 众裁0
前天 14:01 #7
BeginnerFXj
BeginnerFXj #8· 前天 14:04
前天 14:04
8楼
看到你说8443端口这个问题,我正好也在折腾VPS挂EA,用的经纪商文档也只写了443。想问下你是怎么确认8443这个端口的?我用netstat看监听端口跟文档对不上,有点懵 😅
回复 复制 众裁0
前天 14:04 #8
橘猫打盹
橘猫打盹 #9· 前天 15:04
前天 15:04
9楼
这帖把防火墙端口讲透了,尤其"出站不用管入站必须放行",我自己也用UFW时卡在8443上,后来直接抓包才定位到端口。
回复 复制 众裁0
前天 15:04 #9
THE END
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。汇友之家合作的各家经纪商均为持有正规外汇牌照的经纪商,我们不参与经纪商的任何经营活动。经纪商在经营过程中可能出现破产清算、资不抵债、跑路或躲避责任等情况,这些问题汇友之家无法控制,亦不承诺任何经纪商资金的绝对安全。请知悉!
← 上一帖 MT5图表切换周期后自定义指标参数自动重置,怎么锁定? 下一帖 → 新手求助:MT4移动止损脚本为何时灵时不灵,求修复思路