Відкритий порт 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

Використання графічного інтерфейсу

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

$ sudo system-config-firewall-tui

Потім ви можете пройти різні екрани налаштування iptablesправил.

            ss №1

            ss №2

Список літератури


Останнє правило видалило всі попередні правила у моєму файлі iptables і додало лише одне вище (sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT). Тепер я також не можу отримати доступ до сторінки apache із свого браузера.
Ерік ван де Вен

1
@ErikVandeVen - вибачте, що я не зробив це зрозуміліше. Інші правила, які у вас були, або потрібно буде додати таким же чином і зберегти (на сам час), або ви можете перейти до файлу /etc/sysconfig/iptablesі додати їх. Вихідні дані повинні бути в цьому файлі, /etc/sysconfig/iptables.save.
slm

Дякую, мені вдалося відновити iptables, скопіювавши iptables.save. Але я все ще не зміг додати це правило, не отримуючи помилок і не маючи змоги відкрити тестову сторінку apache в моєму браузері одночасно. Я перегляну перший підручник, який опублікував риклаг :)
Ерік ван де Вен

1
Людина, я абсолютно не зрозумів, чому ця відповідь отримала будь-яку подібну досі. Відмінна детальна відповідь. Розгляньте мою, як тисячу подяк.
Самірон

1
Графічний інтерфейс брандмауера - бог, якого раніше не бачив!
Метт Флетчер

0

Нещодавно я встановив CentOS 6.5 як віртуальну машину з тієї ж причини, щоб використовувати його як віртуальний веб-сервер. У будь-якому разі я дотримувався цієї дуже детальної інструкції з вікі CentOS . Потім, відповідно до відповіді @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.