Невозможно подключиться к Apache из Интернета
У меня есть экземпляр apache, запущенный с настроенным vhost, вот httpd.conf:
#Listen {the_server_ip}:80
Listen 80
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/example.com
ServerName example.com
ServerAlias www.example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log common
</VirtualHost>
Вот запись в /etc/hosts:
127.0.0.1 example.com www.example.com
Сервер работает и слушает:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::80 :::* LISTEN 8756/httpd
Вот запрос CURL с сервера:
[пример root@localhost] # curl -I http://example.com/index.html
HTTP/1.1 200 OK
Date: Tue, 01 Mar 2016 11:12:47 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Tue, 01 Mar 2016 11:12:12 GMT
ETag: "8aaa-5-52cfad64b4dbe"
Accept-Ranges: bytes
Content-Length: 5
Connection: close
Content-Type: text/html; charset=UTF-8
Вот мои правила iptables для цепочки INPUT:
Chain INPUT (policy DROP 30 packets, 2242 bytes)
pkts bytes target prot opt in out source destination
195 150K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
185 15126 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
37508 101M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
192 11152 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
64 3116 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Вот мои правила iptables для цепочки OUTPUT:
Chain OUTPUT (policy DROP 3 packets, 152 bytes)
pkts bytes target prot opt in out source destination
199 151K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
16220 3289K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22
692 47470 ACCEPT udp -- * * 0.0.0.0/0 8.8.8.8 udp dpt:53
107 8636 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
14164 603K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
430 18880 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
TCPDUMP:
[root@localhost iwanttobesysadmin.com]# tcpdump -v port 80 and host {home_ip}
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
3 packets captured
3 packets received by filter
0 packets dropped by kernel
Я также не могу подключиться через telnet с моего компьютера Windows через порт 80 на сервере, но он может выполнять команду ping. Я считаю, что есть некоторые ограничения в правилах брандмауэра цепочки INPUT.
1 ответ
"Я считаю, что в правилах брандмауэра цепочки INPUT есть некоторые ограничения".
Вы ошибаетесь. Однако есть проблема в OUTPUT
цепочка, потому что, хотя вы позволяете людям общаться с вашим веб-сервером, вы не позволяете ответам вернуться обратно.
Вы добавили выходное правило с состоянием, чтобы разрешить этот трафик, с
iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
и все сейчас работает.