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