세부 사항은 다음과 같습니다. Apache 기반 사이트에 액세스할 수 있습니다.내부(서버 내에서)을(를) 통해 curl
액세스할 수 없음외부적으로(다음을 제외하고는 아무것도 작동하지 않습니다 . 브라우저 액세스를 ping
시도했습니다 .) - itcurl
타임아웃. 나는 netcat
, netstat
및 traceroute
( iptables
에서 제안한대로)을 사용하여 문제의 원인을 식별하려고 시도했습니다.이 페이지), 그러나 아무 소용이 없습니다.
구성 은 다음과 같습니다 iptables
(활성 네트워크 인터페이스는 입니다 eth1
).
iptables -L -nv
Chain INPUT (policy DROP 108K packets, 18M bytes)
pkts bytes target prot opt in out source destination
4575 394K fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
11433 3923K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
5262 481K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 156 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:389
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- venet0 * 0.0.0.0/0 0.0.0.0/0 tcp dpts:830:831
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1170
3 180 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- venet0 * 10.0.0.0/8 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED,DNAT
0 0 ACCEPT tcp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 tcp dpts:830:831
0 0 ACCEPT tcp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT udp -- venet0 eth0 0.0.0.0/0 0.0.0.0/0 udp dpt:53
Chain OUTPUT (policy ACCEPT 15571 packets, 4718K bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
4575 394K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
답변1
먼저 서버에서 iptables를 비활성화하고 페이지에 액세스해 보십시오.
#service iptables stop
데비안의 경우:
#iptables -F
모든 규칙이 새로고침됩니다.
포트 번호가 기본 80이 아닌 경우에도 ip를 사용하여 포트 번호를 지정해야 합니다. 또한 selinux를 허용 모드로 설정해 보십시오.
#setenforce 0
웹 서비스 서버가 virtualbox에 있는 경우에는 포트 포워딩도 수행해야 합니다.
외부에서는 로컬 LAN을 의미한다고 생각합니다.
반품
Apache 구성 파일(httpd.conf, apache2.conf, listening.conf...)에서 LISTEN 지시어를 검색하세요. localhost 또는 127.0.0.1이 표시되면 서버 IP로 덮어써야 합니다.
listen 192.168.1.15:80
이것이 selinux 문제라는 것을 확인한 후 selinux를 활성화하려면 selinux에서 httpd를 허용해야 합니다.
# setsebool -P httpd_can_network_connect=1
이것이 iptables 문제임을 확인하고 ip 테이블을 활성화하고 페이지에 계속 액세스하려면 방화벽에서 포트 80을 허용하십시오.
Debian iptables에서 http와 https를 허용하려면 다음 링크를 참조하세요:
https://github.com/iahmad-khan/system-admin/blob/master/iptables-debian