Я пытаюсь удаленно открыть порт в брандмауэре iptables, используя Capistrano. Вот моя задача:Почему 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?
TIA для решения или любого понятия.
Удачи!