Tôi không biết nhiều về máy chủ web hoặc HAProxy, nhưng tôi có thể cho bạn một số lời khuyên về IPtables và sau đó trả lời câu hỏi của bạn.
- IPtables đọc các quy tắc từ trên xuống và dừng đọc các quy tắc khi đạt đến DROP, REJECT hoặc ACCEPT.
- IPtables phân biệt chữ hoa chữ thường.
Chấp nhận
không giống như CHẤP NHẬN
- chính sách IPtables
-P
được sử dụng khi không có quy tắc nào khác trong bảng áp dụng cho một gói đã cho.
- Đảm bảo rằng khi bạn thêm các quy tắc IPtables mới, bạn sẽ loại bỏ các quy tắc cũ bằng cách nhập
iptables -t bộ lọc -F
và sau đó iptables -t bộ lọc -X
. Hai lệnh này sẽ xóa bảng bộ lọc (bảng mặc định) và cũng xóa mọi chuỗi con trong bảng.
- Đảm bảo các quy tắc trên máy khách được phản ánh trên máy chủ và đảm bảo các quy tắc trên máy chủ được phản ánh trên máy khách.
Để trả lời câu hỏi của bạn ...
Trước tiên, hãy thử xóa hoàn toàn tường lửa của bạn bằng cách chạy các lệnh sau để xóa tất cả các bảng trong IPtables:
iptables -t raw -F
iptables -t mangle -F
iptables -t nat -F
iptables -t bộ lọc -F
iptables -t raw -X
iptables -t mangle -X
iptables -t nat -X
iptables -t bộ lọc -X
Sau đó đảm bảo không có tường lửa nào khác đang chạy.
CentOS/Fedora/Rhel:
systemctl dừng tường lửa
Debian/Ubuntu:
systemctl dừng ufw
Sau đó, làm một số thử nghiệm. HAProxy có hoạt động không? Nếu nó hoạt động, vấn đề của bạn là tường lửa. Nếu nó không không phải hoạt động, thì bạn cần sửa đổi các quy tắc IPtables của mình.Có thể bắt đầu bằng cách làm cho các quy tắc IPtables của bạn càng cụ thể càng tốt và sau đó ngày càng trở nên cụ thể hơn. Dưới đây là các đề xuất của tôi để bắt đầu:
Đảm bảo lưu lượng truy cập vòng lặp được bật trên máy chủ. Lưu lượng loopback không bao giờ rời khỏi máy chủ:
iptables -t filter -A INPUT -i lo -j CHẤP NHẬN
Hãy thử đưa IP của máy chủ HAProxy vào danh sách trắng thay vì cổng:
iptables -t bộ lọc -A INPUT -s ${HAPROXY_IP} -j CHẤP NHẬN
Cho phép THÀNH LẬP
và CÓ LIÊN QUAN
kết nối:
iptables -t filter -A INPUT -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN