Не вдається отримати доступ до порту 80 з віддаленого місця, але працює на локальному?


14

У мене є Linux сервер на конфігурацію з apache. Однак я не можу отримати доступ до нього за допомогою віддаленого комп'ютера.

Я можу звичайно сш на сервер.

моя IP-таблиця:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

netstat -ant

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 SERVERIP:80                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:45117               0.0.0.0:*                   LISTEN
tcp        0    196 SERVERIP:22                 MyIP:3149                   ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::47193                    :::*                        LISTEN

використовуючи, Curl SERVERIP:80і curl localhost:80обидва повертають сторінку за замовчуванням з apache.

У чому може бути проблема?

Відповіді:


26

Потрібно включити доступ до вашого сервера через порт 80, оскільки він наразі блокується iptables.

sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Це вставить правило у вашу конфігурацію iptables на початку. Виконавши це і перевіривши, що він працює, вам слід зберегти конфігурацію, щоб вона була використана наступного разу при запуску послуги,

sudo /sbin/service iptables save

це запише поточну конфігурацію в /etc/sysconfig/iptables.

Якщо ви використовуєте CentOS 7, то FirewallD - це правильний шлях:

firewall-cmd --zone = public --add-port = 80 / tcp

Перевірте у своєму браузері, що він працює, а потім:

firewall-cmd --zone = public --add-port = 80 / tcp - постійний

firewall-cmd - перезавантажити

Щоб зміни були постійними


1

Ваші правила iptables дозволяють лише вхідні з'єднання через порт 22. Також відкрийте порт 80.


... а cmd єiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik

... що є правильним, але не буде працювати, оскільки воно додасть це правило за тим, яке ВІДМОВАЄ всі вхідні з'єднання, не прийняті раніше.
Paweł Brodacki

Це правда, я просто звик додавати його до файлу правил у правильну позицію, забув згадати. iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited, то попередній, а потім додайте заперечувальну сукупність зiptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
onik

0

Ви також можете безпосередньо користуватися послугою http за замовчуванням

firewall-cmd - постійний --zone = public --add-service = http

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.