ไม่สามารถเข้าถึงพอร์ต 80 จากสถานที่ห่างไกล แต่ทำงานในพื้นที่ได้หรือไม่


14

ฉันมีเซิร์ฟเวอร์ linux ในการกำหนดค่าด้วย apache อย่างไรก็ตามฉันไม่สามารถเข้าถึงได้โดยใช้คอมพิวเตอร์ระยะไกล

ฉันสามารถ ssh ไปยังเซิร์ฟเวอร์ได้ตามปกติ

ตาราง IP ของฉัน:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

netstat --ant

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 SERVERIP:80                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:45117               0.0.0.0:*                   LISTEN
tcp        0    196 SERVERIP:22                 MyIP:3149                   ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::47193                    :::*                        LISTEN

ใช้Curl SERVERIP:80และcurl localhost:80ทั้งสองกลับหน้าเริ่มต้นจาก apache

มีปัญหาอะไร

คำตอบ:


26

คุณต้องเปิดใช้งานการเข้าถึงเซิร์ฟเวอร์ของคุณบนพอร์ต 80 เนื่องจากขณะนี้มันถูกบล็อกโดย iptables

sudo /sbin/iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

สิ่งนี้จะแทรกกฎลงในการกำหนดค่า iptables ของคุณเมื่อเริ่มต้น เมื่อคุณทำสิ่งนี้และทดสอบว่าใช้งานได้แล้วคุณควรบันทึกการกำหนดค่าเพื่อให้ใช้ในครั้งถัดไปที่เริ่มบริการ

sudo /sbin/service iptables save

/etc/sysconfig/iptablesนี้จะเขียนการตั้งค่าปัจจุบัน

หากคุณใช้ CentOS 7 แล้ว FirewallD เป็นวิธีที่เหมาะสมในการไป:

firewall-cmd --zone = public --add-port = 80 / tcp

ตรวจสอบกับเบราว์เซอร์ของคุณว่าใช้งานได้และจากนั้น:

firewall-cmd --zone = public --add-port = 80 / tcp --permanent

firewall-cmd - โหลด

เพื่อทำการเปลี่ยนแปลงอย่างถาวร


1

กฎ iptables ของคุณอนุญาตเฉพาะการเชื่อมต่อขาเข้าที่พอร์ต 22 เปิดพอร์ต 80 เช่นกัน


... และคำสั่งคือiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
onik

... ซึ่งถูกต้อง แต่จะใช้งานไม่ได้เพราะจะผนวกกฎนี้ไว้ข้างหลังกฎที่ปฏิเสธการเชื่อมต่อขาเข้าทั้งหมดที่ไม่ได้รับการยอมรับก่อนหน้านี้
Paweł Brodacki

นั่นเป็นความจริงฉันเพิ่งใช้เพื่อเพิ่มลงในไฟล์กฎลงในตำแหน่งที่ถูกต้องลืมพูดถึง iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibitedจากนั้นก่อนหน้านี้จากนั้นเพิ่มบทปฏิเสธทั้งหมดด้วยiptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
onik

0

คุณยังสามารถใช้บริการ http เริ่มต้นได้โดยตรง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.