Откройте порт 80 в CentOS 6.5


14

Я пытаюсь открыть порт 80 в моем CentOS 6.5 на моей виртуальной машине, чтобы я мог получить доступ к apache из браузера моего рабочего стола.

введите описание изображения здесь

Если вы посмотрите на скриншот выше .... Я добавил строку перед синей стрелкой, как написано на http://www.cyberciti.biz/faq/linux-iptables-firewall-open-port- 80 / Теперь я получаю тестовую страницу apache при вводе IP-адреса в своем браузере, но все же при перезапуске iptables я получаю сообщение «FAILED», когда CentOS пытается применить новое правило.

Кто-нибудь знает решение для этого? Или мне нужно игнорировать неудачу?

Ответы:


28

Вместо того, чтобы вводить правила вручную, вы можете использовать их, iptablesчтобы добавить правила в соответствующие цепочки и затем сохранить их. Это позволит вам отлаживать правила в реальном времени, подтверждая, что они правильные, а не добавлять их в файл, как вы, кажется, делаете.

Чтобы открыть порт 80, я делаю это:

$ sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo /etc/init.d/iptables save

Последняя команда сохранит добавленные правила. Это правило, которое я бы использовал, чтобы открыть порт для веб-трафика.

Почему ваше правило вызывает проблемы

Если вы заметили правило, которое вы пытаетесь использовать:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Имеет цепочку под названием «RH-Firewall-1-INPUT». Если у вас нет этой цепочки или ссылки из INPUTцепочки на эту цепочку, то это правило никогда не будет доступно. Это правило может быть таким:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Или ваша INPUTцепочка должна ссылаться на эту цепочку RH-Firewall-1-INPUTс помощью правила вроде этого:

$ sudo iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0
....

ПРИМЕЧАНИЕ: вы можете увидеть, какие цепочки у вас есть с этой командой:

$ sudo iptables -L| grep Chain
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
...

Также, возможно, потребуется изменить состояния, чтобы разрешить существующие соединения.

-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT

Также, когда вы используете -Aпереключатель, вы добавляете правило в цепочку INPUT. Если перед ним есть другие правила, которые блокируют и / или мешают достижению этого правила, оно никогда не будет выполнено. Таким образом, вы можете захотеть переместить его в начало, вставив, а не добавив, например так:

-I INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT

Использование GUI

Брандмауэры могут быть сложными животными. Таким образом, вы можете попробовать вместо этого TUI (TUI являются GUI для терминала).

$ sudo system-config-firewall-tui

Затем вы можете пройти через различные экраны настройки iptablesправил.

            сс # 1

            сс # 2

Ссылки


Последнее правило удалило все предыдущие правила в моем файле iptables и добавило только одно выше (sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ПРИНЯТЬ). Теперь я больше не могу получить доступ к странице apache из своего браузера.
Эрик ван де Вен

1
@ErikVandeVen - извини, я не прояснил это. Остальные правила, которые у вас были, должны быть добавлены таким же образом и сохранены (в то же время), или вы можете перейти к файлу /etc/sysconfig/iptablesи добавить их. Ваши оригинальные записи должны быть в этом файле /etc/sysconfig/iptables.save.
SLM

Спасибо, я смог восстановить iptables, скопировав iptables.save. Но я все еще не мог добавить правило, не получив ошибку и не смог открыть тестовую страницу apache в моем браузере одновременно. Сначала я посмотрю учебник, который Риклагс опубликовал :)
Эрик ван де Вен,

1
Чувак, я совершенно не понимаю, почему этот ответ получил еще одно подобное. Отличный подробный ответ. Считай, что мой, как тысяча, спасибо.
Самирон

1
Этот графический интерфейс брандмауэра - божественная посылка, такого еще не было!
Мэтт Флетчер

0

Я недавно установил CentOS 6.5 как виртуальную машину по той же причине, чтобы использовать в качестве виртуального веб-сервера. Во всяком случае, я следовал этому очень подробному руководству из CentOS Wiki . Затем, согласно ответу @slm, я добавил к нему порт 80 и сохранил, используя sudo /etc/init.d/iptables save.

iptables -L -v имеет такой вывод:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
  214 17168 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
    1    44 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh 
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:http 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 169 packets, 15164 bytes)
 pkts bytes target     prot opt in     out     source               destination

0

Если вы хотите отредактировать настройки брандмауэра, но вы не знакомы с этим iptables, я предлагаю вам использовать этот system-config-firewall-tuiинструмент, если у вас нет X-сервера, или использовать system-config-firewallинструмент, который является инструментом GUI для него.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.