近来有人向我询问关于SRV解析的事,并且质疑是否可以防止攻击之类的.

很明显的是,SRV解析是完全无法防止他人攻击服务器的,举个栗子:

当你在Minecraft里线上游戏时,无论对 方是SRV还是A记录解析,打开资源监控器—网络都能看到所连接的服务器IP..有些软件也可以利用这种原理来查看背后的原IP.

所以说SRV解析对于Minecraft服务器只能起个域名美化作用,少个端口而已.
(而且经我测试..SRV解析有些客户端甚至还经常不认,估计优先级别不是很高)
TIM图片20180711132524.jpg

# 好了,回归正题,接下来介绍一下我的方法..

Minecraft服务器的协议是TCP,因此我们主要要做的就是反向代理TCP。

因为我用的是Centos,就先用其来做个演示吧,我们主要用到的是神奇的iptables.

首先先安装iptables,一般的centos会自带,实在没有可以自行安装~先开启iptables服务

service iptables start

TIM截图20180711110649.png

chkconfig iptables on 以设置开机启动服务

在安装之后利用

iptables -F  
iptables -t nat -F  

*来去除一些不必要的自带规则~ *

service iptables save  

用来保存规则配置
TIM截图20180711110746.png

# 基本工作做完了,接下来要开始搞转发了.

值得一提,要先检查是否支持转发,

vim /etc/sysctl.conf   

将 net.ipv4.ip_forward = 0 改为 1
:wq退出保存

TIM截图20180711112352.png

接下来到了重头戏,按照以下格式:

iptables -t nat -I PREROUTING -p tcp --dport 23333 -j DNAT --to MC服务器IP:端口  
iptables -t nat -I POSTROUTING -p tcp --dport MC服务器端口 -j MASQUERADE  

TIM截图20180711111457.png
这样做了之后,你可以通过代理服务器的23333端口访问原服务器的端口(图中示例25565).

我用了宝塔面板,由此还要注意端口开放之类的问题(就如腾讯云阿里云的安全组之类的~)
TIM截图20180711111003.png

搞完这些事后,利用

iptables -L -n -t nat  

来列出目前转发的规则,看看是否录入~
TIM截图20180711111612.png
如图便是正常情况~


让我们打开Minecraft来测试一下:
TIM截图20180711111732.png
TIM截图20180711112437.png

# 非常NICE!成功了!

service iptables save  

保存配置~大功告成~


# 紧接着你可能会问,这规则怎么删除呢?

其实操作起来也没有那么复杂:

service iptables status  

用来列出一系列的规则~
TIM截图20180711155640.png
如图,前面的NUM便是序号。
接着找到你要删除的规则的序号,比如我要删除第二条:

iptables -t nat -D PREROUTING 2  

回车,我们再使用service iptables status时就不会再有这一条了,service iptables save保存一下。

我们再刷新,这条规则对应的服务器就无法连接,意味着规则失效咯~
TIM截图20180711114005.png

以上便是全部,同时要感谢谷歌娘~