在 debian 的 iptables 中添加规则以打开新端口

问题描述 投票:0回答:2

我正在尝试在 Debian 系统的 iptables 中打开端口 3306,以允许访问 MySQL 服务器。为此我输入了这个命令:

root@debian:/# sudo iptables -A INPUT -p tcp --dport 3306 ACCEPT
root@debian:/# iptables-save

我输入了新连接,它已保存在 iptables 中,因为我可以在 iptables-save 命令生成的 iptables 列表中看到新规则。

但是,这个 debian 系统在 Windows7 上的虚拟机上运行,我无法从 Windows 远程登录到此端口。不知道我应该在哪里检查这个问题的解决方案。

debian iptables
2个回答
51
投票

关于您的命令行:

root@debian:/# sudo iptables -A INPUT -p tcp --dport 3306 --jump ACCEPT
root@debian:/# iptables-save
  • 您已经通过身份验证为

    root
    ,因此
    sudo
    在那里是多余的。

  • 您在

    -j
    参数之前缺少
    --jump
    ACCEPT
    (只是认为这是一个拼写错误,而您正确插入了它)。

关于你的问题:

如果您按照问题中的指示正确插入了

iptables
规则,则问题可能与您正在使用的虚拟机管理程序(虚拟机提供商)有关。

如果您提供虚拟机管理程序名称(VirtualBox、VMWare?),我可以进一步指导您,但您可以先尝试以下一些建议:

检查您的虚拟机网络设置并:

  • 如果设置为 NAT,那么您将无法从基础计算机连接到虚拟机。

  • 如果将其设置为托管,则必须首先配置其网络设置,通常为它们提供 192.168.56.0/24 范围内的 IP,因为这是管理程序用于此目的的默认设置。

  • 如果它设置为桥接,与托管相同,但只要 IP 范围对您的配置有意义,您就可以配置它。


10
投票

(我认为您已经通过完全删除防火墙(iptables -P INPUT ACCEPT;iptables -P OUTPUT ACCEPT;iptables -F)得出结论这是 iptables 问题,并确认您可以从 Windows 机器连接到 MySQL 服务器?)

INPUT 表中的某些先前规则可能会拒绝或丢弃数据包。您可以通过在顶部插入新规则来解决这个问题,尽管您可能需要检查现有规则以查看这是否合理:

iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT

请注意,iptables-save 不会持久保存新规则(即重新启动后) - 您需要为此找出其他方法。我通常的路线是将 iptables-save 输出存储在文件中(/etc/network/iptables.rules 或类似文件),然后使用 /etc/network/interfaces 中的 pre-up 语句加载。

© www.soinside.com 2019 - 2024. All rights reserved.