GNU/Linux >> Znalost Linux >  >> Linux

apache nepřijímá příchozí připojení mimo localhost

V případě ještě nevyřešeno. Vaše iptables říkají:

state RELATED,ESTABLISHED

Což znamená, že propustí pouze již vytvořená spojení... která jste vytvořili vy, ne vzdálené stroje. Výjimky z tohoto pak můžete vidět v následujících pravidlech:

state NEW tcp dpt:ssh

Což platí pouze pro ssh, takže byste měli přidat podobné pravidlo/řádek pro http, což můžete udělat takto:

state NEW tcp dpt:80

Což můžete udělat takto:

sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

(V tomto případě volím přidání nového pravidla do čtvrtého řádku)

Pamatujte, že po úpravě byste soubor měli uložit takto:

sudo /etc/init.d/iptables save

CentOS 7 nyní standardně používá firewall. Ale všechny odpovědi se zaměřují na iptables. Takže jsem chtěl přidat odpověď související s firewalld.

Vzhledem k tomu, že firewalld je „obal“ pro iptables, zdá se, že použití antonio-fornieho odpovědi stále funguje, ale nepodařilo se mi toto nové pravidlo „uložit“. Takže jsem se nemohl připojit k mému serveru Apache, jakmile došlo k restartu firewallu. Naštěstí je ve skutečnosti mnohem jednodušší provést ekvivalentní změnu pomocí příkazů brány firewall. Nejprve zkontrolujte, zda je spuštěn firewalld:

firewall-cmd --state

Pokud běží, odezva bude jednoduše jeden řádek, který říká "běží".

Dočasné povolení připojení http (port 80) ve veřejné zóně:

sudo firewall-cmd --zone=public --add-service=http

Výše uvedené nebudou „uloženy“, při příštím restartu služby firewallu se vrátí k výchozím pravidlům. Toto dočasné pravidlo byste měli použít k testování a ujistit se, že řeší váš problém s připojením, než budete pokračovat.

Trvalé povolení připojení http ve veřejné zóně:

sudo firewall-cmd --zone=public --permanent --add-service=http

Pokud provedete příkaz „permanent“, aniž byste provedli také příkaz „dočasný“, budete muset restartovat firewalld, abyste získali nová výchozí pravidla (u systémů bez CentOS se to může lišit):

 sudo systemctl restart firewalld.service

Pokud to nevyřešilo vaše problémy s připojením, může to být způsobeno tím, že vaše rozhraní není ve „veřejné zóně“. Následující odkaz je skvělým zdrojem informací o firewallu. Podrobně popisuje, jak kontrolovat, přiřazovat a konfigurovat zóny:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7


SELinux ve výchozím nastavení brání Apache (a tedy všem modulům Apache) ve vzdáleném připojení.

# setsebool -P httpd_can_network_connect=1

Linux
  1. Jak otevřít port 80 a 443 ve FirewallD

  2. Jak nastavit vHosts v Apache

  3. Stát se rootem zevnitř Vimu?

  1. Nainstalujte Apache na Debian 10

  2. Instalace/aktualizace skladatele nefunguje

  3. sudo:npm:příkaz nenalezen

  1. [Opraveno] uživatelské jméno není v souboru sudoers

  2. příkaz nebyl nalezen při použití sudo

  3. 'rm' nebyl nalezen v PATH nebo není spustitelný