首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables不允许mysql连接到别名的ips?

问iptables不允许mysql连接到别名的ips?
EN

Server Fault用户
提问于 2012-06-25 23:06:47
回答 1查看 735关注 0票数 10

我在提供MySQL服务的服务器上有一个相当简单的iptables防火墙,但是iptables似乎给出了非常不一致的结果。

脚本的默认策略如下:

代码语言:javascript
复制
iptables -P INPUT DROP

然后,我可以使用以下规则将MySQL公开:

代码语言:javascript
复制
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

有了这个规则,我就可以从任何源IP连接到服务器上的任何目标IP,而不会出现问题。但是,当我试图通过用下面的行替换上面的行来限制对三个I的访问时,我遇到了麻烦(xxx=masked octect):

代码语言:javascript
复制
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.184 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.196 -j ACCEPT 
iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.XXX.XXX.251 -j ACCEPT 

一旦制定了上述规则,就会发生以下情况:

  • 只要我使用MySQL服务器的默认IP地址或与默认IP地址相同的子网中的IP别名连接到MySQL服务器,我就可以从.184、.196和.251主机连接到MySQL服务器。
  • 当我来自MySQL或.196主机时,我无法使用从不同子网分配给服务器的IP别名连接到.184,但是.251工作得很好。从.184或.196主机上,一次远程网络尝试刚刚挂起.# telnet 209.xxx.xx.22 3306尝试209.xx.xx.22.
  • 如果删除.251行(使.196成为最后添加的规则),则.196主机仍然无法使用IP别名连接到MySQL (因此导致不一致行为的不是规则的顺序)。我知道,这个特别的测试是很愚蠢的,因为这三个规则添加到什么顺序并不重要,但我想可能有人会问。
  • 如果我切换回"public“规则,所有主机都可以使用默认或别名的-p (在两个子网中)连接到MySQL服务器: iptables -A -p-p tcp -dport 3306 -j ACCEPT。

服务器在一个CentOS 5.4OpenVZ/Proxmox容器(2.6.32-4-pve)中运行。

而且,如果您希望在iptables脚本的上下文中看到问题规则,请看这里(xxx=masked octect):

代码语言:javascript
复制
# Flush old rules, old custom tables
/sbin/iptables --flush
/sbin/iptables --delete-chain

# Set default policies for all three default chains
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

# Enable free use of loopback interfaces
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# All TCP sessions should begin with SYN
/sbin/iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Accept inbound TCP packets (Do this *before* adding the 'blocked' chain)
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow the server's own IP to connect to itself
/sbin/iptables -A INPUT -i eth0 -s 208.xxx.xxx.178 -j ACCEPT

# Add the 'blocked' chain *after* we've accepted established/related connections
#   so we remain efficient and only evaluate new/inbound connections
/sbin/iptables -N BLOCKED
/sbin/iptables -A INPUT -j BLOCKED

# Accept inbound ICMP messages
/sbin/iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -p ICMP --icmp-type 11 -j ACCEPT

# ssh (private)
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s xxx.xxx.xxx.xxx -j ACCEPT          

# ftp (private)
/sbin/iptables -A INPUT -p tcp --dport 21 -m state --state NEW -s xxx.xxx.xxx.xxx -j ACCEPT          

# www (public)
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT                                
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT                               

# smtp (public)
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT                                
/sbin/iptables -A INPUT -p tcp --dport 2525 -j ACCEPT                              

# pop (public)
/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT                               

# mysql (private)
/sbin/iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.xxx.xxx.184 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.xxx.xxx.196 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp --dport 3306 -m state --state NEW -s 208.xxx.xxx.251 -j ACCEPT 

有什么想法吗?提前谢谢。:-)

EN

回答 1

Server Fault用户

回答已采纳

发布于 2012-06-26 00:27:49

.184或.196主机客户端主机是否在其他子网中也有其他IP地址?

如果您做了一个tcpdump -qn port 3306并尝试从其中一个系统进行连接,您会看到什么?您看到您期望的源地址了吗?这可能是一个简单的路由问题。

当系统进行路由决策时,它会参考路由表。路由表是始终按特定顺序查询的列表。本地网络的链路路由几乎总是最首选的路由,并且将在使用网关(路由器)的路由之前使用。默认网关总是在没有其他路由应用时使用的路由。如果给定路由定义了src,则优先使用该地址,并且在使用该路由时最有可能使用该地址。

代码语言:javascript
复制
10.2.13.0/24 dev eth1  proto kernel  scope link  src 10.2.13.1 
10.2.4.0/23 dev eth0  proto kernel  scope link  src 10.2.4.245 
default via 10.2.4.1 dev eth0 

因此,考虑到多主系统的这个例子路由表,任何指定给10.2.13.0/24的都将来自10.2.13.1,而任何指定给10.2.4.0/23的都将来自10.2.4.245。

票数 8
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/402167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档