У меня установлен Ubuntu 12.04 Server, который обслуживает приложение Ruby on Rails с Apache и Passenger. Я использую iptables для контроля трафика. Вчера я настроил Apache для использования SSL для сайта. После настройки я понял, что не могу получить доступ к веб-сайту, потому что порт 443 был закрыт, хотя я специально его открыл. Странно, что если я перезагружу приведенные ниже правила обратно в iptables, порт внезапно откроется, и я смогу получить доступ к сайту через https. Однако, если я перезагружаю сервер, порт остается закрытым до тех пор, пока я снова не перезагрузлю правила. Я попытался устранить неполадки Apache как можно лучше, а также перенес свое правило, открыв 443, чтобы устранить любые конфликты. Но ничего не сработало, ошибок нет, и я не знаю, где еще искать. Я надеюсь, что у кого-то здесь будет ответ. Ниже приведены мои правила iptables.
*filter
# Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT
# Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# Allow traffic for Nagios
-A INPUT -p tcp --dport 5666 -j ACCEPT
# Allow traffic for Munin
-A INPUT -p tcp --dport 4949 -j ACCEPT
# Allow SSH connections
#
# The -dport number should be the same port number you set in sshd_config
#
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Allow ping
-A INPUT -p icmp -j ACCEPT
# Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
Правила в файле правил запуска - это просто правила запуска. Изменения могут быть внесены в правила после запуска вами или любым другим процессом с привилегиями root. Запустите iptables-save
(или iptables -L
, если у вас нет -save) из консоли, чтобы увидеть, каковы правила в данный момент, пока возникает проблема, и вы найдете правило, блокирующее ваш трафик. Определить, откуда исходит это правило, гораздо сложнее. На простейшем уровне, где-то позже в ваших скриптах инициализации может быть iptables -I ... port 443 DENY
.