【问题标题】:Adding a rule in iptables in debian to open a new port在 debian 的 iptables 中添加规则以打开新端口
【发布时间】:2014-04-01 02:15:02
【问题描述】:

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

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

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

但是,这个 debian 系统在 Windows7 上的 VM 上运行,我无法从 Windows telnet 到这个端口。不知道我应该在哪里检查这个问题的解决方案。

【问题讨论】:

  • 堆栈溢出的Offtopic,但看看例如help.ubuntu.com/community/IptablesHowTo -- 特别注意chain 在任何地方都不是有用的或预期的参数。
  • @tripleee 谢谢。该页面有所帮助。虽然我的问题没有完全解决,但我已经修改了问题以反映这一点。

标签: debian iptables


【解决方案1】:

关于你的命令行:

root@debian:/# sudo iptables -A INPUT -p tcp --dport 3306 --jump ACCEPT
root@debian:/# iptables-save
  • 你已经被认证为root,所以sudo在那里是多余的。

  • 您在 ACCEPT 参数之前缺少了 -j--jump(只是认为这是一个错字,并且您正确插入了它)。

关于你的问题:

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

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

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

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

  • 1234563 /p>
  • 如果设置为 Bridge,则与 Hosted 相同,但您可以在 IP 范围对您的配置有意义时对其进行配置。

希望这会有所帮助。

【讨论】:

  • ...--dport 3306 之后……你忘了-j,所以应该是--dport 3306 -j ACCEPT
【解决方案2】:

(我假设您已经通过完全删除防火墙(iptables -P INPUT ACCEPT;iptables -P OUTPUT ACCEPT;iptables -F)得出结论,这是一个 iptables 问题,并确认您可以从您的窗户盒?)

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

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

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

【讨论】:

    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2015-03-15
    • 2011-09-17
    相关资源
    最近更新 更多