ฉันไม่รู้อะไรมากเกี่ยวกับเว็บเซิร์ฟเวอร์หรือ HAProxy แต่ฉันสามารถให้คำแนะนำเกี่ยวกับ IPtables แก่คุณได้ และจากนั้นตอบคำถามของคุณ
- IPtables อ่านกฎจากบนลงล่างและหยุดอ่านกฎเมื่อถึง DROP, REJECT หรือ ACCEPT
- IPtables คำนึงถึงขนาดตัวพิมพ์
ยอมรับ
ไม่เหมือนกับ ยอมรับ
- นโยบาย IPtables
-ป
ใช้เมื่อไม่มีกฎอื่นใดในตารางที่ใช้กับแพ็กเก็ตที่กำหนด
- ตรวจสอบให้แน่ใจว่าเมื่อคุณเพิ่มกฎ IPtables ใหม่ คุณกำลังล้างกฎเก่าออกโดยการป้อน
iptables -t ตัวกรอง -F
แล้ว iptables -t ตัวกรอง -X
. คำสั่งทั้งสองนี้จะล้างตารางตัวกรอง (ตารางเริ่มต้น) และล้างข้อมูลย่อยในตารางด้วย
- ตรวจสอบให้แน่ใจว่ากฎบนไคลเอนต์มีผลกับโฮสต์และตรวจสอบให้แน่ใจว่ากฎบนโฮสต์มีผลกับไคลเอนต์
เพื่อตอบคำถามของคุณ...
ขั้นแรก ให้ลองล้างไฟร์วอลล์ของคุณโดยสมบูรณ์โดยเรียกใช้คำสั่งเหล่านี้เพื่อล้างตารางทั้งหมดใน IPtables:
iptables -t ดิบ -F
iptables -t mangle -F
iptables -t แนท -F
iptables -t ตัวกรอง -F
iptables -t ดิบ -X
iptables -t mangle -X
iptables -t แนท -X
iptables -t ตัวกรอง -X
จากนั้นตรวจสอบให้แน่ใจว่าไม่มีไฟร์วอลล์อื่นทำงานอยู่
CentOS/Fedora/Rhel:
systemctl หยุดไฟร์วอลล์
เดเบียน/อูบุนตู:
systemctl หยุด ufw
จากนั้นทำการทดสอบ HAProxy ทำงานได้หรือไม่ หากใช้งานได้ แสดงว่าปัญหาของคุณคือไฟร์วอลล์ ถ้ามันไม่ ไม่ คุณต้องแก้ไขกฎ IPtables ของคุณอาจเริ่มต้นด้วยการทำให้กฎ IPtables ของคุณไม่เฉพาะเจาะจงมากที่สุดเท่าที่จะเป็นไปได้ แล้วจึงเจาะจงมากขึ้นเรื่อยๆ นี่คือคำแนะนำของฉันในการเริ่มต้น:
ตรวจสอบให้แน่ใจว่าเปิดใช้งานการรับส่งข้อมูลย้อนกลับบนเซิร์ฟเวอร์ การรับส่งข้อมูลย้อนกลับไม่เคยออกจากเซิร์ฟเวอร์:
iptables -t filter -A INPUT -i lo -j ยอมรับ
ลองอนุญาต IP ของเซิร์ฟเวอร์ HAProxy แทนพอร์ต:
iptables -t filter -A INPUT -s ${HAPROXY_IP} -j ยอมรับ
อนุญาต ที่จัดตั้งขึ้น
และ ที่เกี่ยวข้อง
การเชื่อมต่อ:
iptables -t filter -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ยอมรับ