【问题标题】:Why does Capistrano lock up when executing a specific iptables command?为什么 Capistrano 在执行特定的 iptables 命令时会锁定?
【发布时间】:2010-07-17 20:27:46
【问题描述】:

我正在尝试使用 Capistrano 在 iptables 防火墙中远程打开一个端口。这是我的任务:

  desc "Open up a port in the firewall"
  task :open_port, :roles => :all do
    port = variables[:port] || nil
    if (!port)
      puts "You must specify the port number"
      next
    end
    run "#{sudo} /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport #{port.to_s} -j ACCEPT"
    run "#{sudo} /sbin/service iptables save"
    run "#{sudo} /etc/init.d/iptables restart"
  end

问题是任务中的第一个命令被锁定。我尝试使用各种端口号和目标机器运行此规则,结果始终相同。

我确实有许多其他规则,看起来很像这样,但效果很好。事实上,我有一个类似的任务,其中第一个命令是调用 iptables 以创建端口映射,并且该任务运行良好。

更重要的是,我可以在 Capistrano 主机上成功运行这个命令:

  ssh -l deployer core sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport 2424 -j ACCEPT

这很好用。这应该正是 Capistrano 正在尝试做的事情。

为什么这个命令会锁定 Capistrano?

TIA 寻求解决方案或任何线索。

玩得开心!!!

【问题讨论】:

    标签: linux capistrano iptables


    【解决方案1】:

    前几天我自己想出了这个。问题是我使用名称“端口”作为任务的参数。 “参数”端口被“运行”命令识别,并导致系统尝试通过该端口而不是正常的 ssh 端口连接到目标机器。因此锁定。

    我将参数名称更改为“dport”,任务开始按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2018-07-23
      • 1970-01-01
      • 2021-11-29
      • 2015-08-26
      • 2014-01-11
      • 2018-07-16
      相关资源
      最近更新 更多