
У меня есть Oracle Cloud Infrastructure Compute Node на бесплатном уровне, настроенный на Ubuntu 22.04 в качестве операционной системы. Я успешно установил Nginx и добавил входящее правило в подсеть, чтобы разрешить интернет-подключения на порту 80.
Однако я столкнулся с проблемой, когда я не могу получить доступ к серверу, введя публичный IP в браузере. После некоторых исследований я обнаружил, что мне нужно добавить правило(а) iptables, чтобы разрешить HTTP-трафик на порту 80. После добавления правила(ов) сервер становится доступным. Я нашел два способа сделать это:
Добавив это правило:
sudo iptables -I ВВОД 6 -m состояние --state НОВЫЙ -p tcp --dport 80 -j ПРИНЯТЬ sudo netfilter-persistent сохранить
Или добавив эти два правила:$
sudo iptables -I ВВОД -p tcp --dport 80 -m conntrack --ctstate НОВЫЙ, УСТАНОВЛЕННЫЙ -j ПРИНЯТЬ
$ sudo iptables -I ВЫВОД -p tcp --sport 80 -m conntrack --ctstate УСТАНОВЛЕНО -j ПРИНЯТЬ
Меня озадачивает тот факт, что я не могу получить доступ к серверу извне, не добавив правило(а), даже несмотря на то, что политика INPUT по умолчанию установлена на ACCEPT, и я не смог найти ни одного правила отклонения, специально блокирующего порт 80.
Перед добавлением правила я использовал команду: sudo iptables -S и получил следующий результат:
-P ВХОД ПРИНЯТЬ
-P ПЕРЕСЛАТЬ ПРИНЯТЬ
-P ВЫХОД ПРИНЯТЬ
-N СлужбыЭкземпляров
-A ВХОД -m состояние --state СВЯЗАННЫЙ,УСТАНОВЛЕН -j ПРИНЯТЬ
-A ВХОД -p icmp -j ПРИНЯТЬ
-A ВХОД -i lo -j ПРИНЯТЬ
-A ВХОД -p udp -m udp --sport 123 -j ПРИНЯТЬ
-A ВХОД -p tcp -m state --state НОВЫЙ -m tcp --dport 22 -j ПРИНЯТЬ
-A ВХОД -j ОТКЛОНИТЬ --reject-with icmp-host-prohibited
-A ПЕРЕСЫЛКА -j ОТКЛОНИТЬ --reject-with icmp-host-prohibited
-A ВЫХОД -d 169.254.0.0/16 -j СлужбыЭкземпляров
-A InstanceServices -d 169.254.0.2/32 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.2.0/24 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.4.0/24 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.5.0/24 -p tcp -m owner --uid-owner 0 -m tcp --dport 3260 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.0.2/32 -p tcp -m tcp --dport 80 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 53 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 53 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.0.3/32 -p tcp -m owner --uid-owner 0 -m tcp --dport 80 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.0.4/32 -p tcp -m tcp --dport 80 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 67 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 69 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.169.254/32 -p udp -m udp --dport 123 -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j ACCEPT
-A InstanceServices -d 169.254.0.0/16 -p tcp -m tcp -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j REJECT --reject-with tcp-reset
-A InstanceServices -d 169.254.0.0/16 -p udp -m udp -m comment --comment "См. раздел Oracle-Provided Images в документации Oracle Cloud Infrastructure, чтобы узнать о влиянии изменения или удаления этого правила на безопасность" -j REJECT --reject-with icmp-port-unreachable
Политики по умолчанию для цепочек INPUT, FORWARD и OUTPUT установлены на ACCEPT. Единственное правило, которое указывает на порт 80 для определенного IP, также установлено на active.
Вопрос: Разве этого не должно быть достаточно для того, чтобы сервер был доступен? Что я упускаю?
Пожалуйста, объясните почему и как простым языком, так как я новичок. Спасибо большое!