panfider wrote:
mình mù về iptable và config server
chi phí nghiên cứu Linux quá cao
Nghiên cứu linux là "rẻ" nhất rồi, toàn mã nguồn mở mà.
Theo mình thấy, bạn chưa hiểu về nguyên tắc các gói tin đi ra / vào trên mạng. Nói ngắn gọn là thế này:
- INPUT của bạn là từ client đến server
- OUTPUT là từ server đến client
Bạn cấu hình iptables input cho phép client kết nối đến port 25 và 110 như vậy là đúng vì như cấu hình trên thì iptables đã "cho qua" gói tin đến port 25 và 110. Nhưng về OUPUT thì bạn làm sai, client gửi request đến port 25 hoặc 110 của server nhưng port mà client mở ra để "giao lưu" là gì ? nó nằm trong khoảng 1024-65535 (port của client hay gọi là source port trong trường hợp của bạn), như vậy server sẽ trả lời đến máy client đến high-port đó.
Bạn thử cấu hình iptables như vậy xem:
Code:
iptables -A OUPUT -p tcp -m tcp --sport 25 --dport 1024:65535 -j LOG
iptables -A OUPUT -p tcp -m tcp --sport 110 --dport 1024:65535 -j LOG
iptables -A OUPUT -p tcp -m tcp --sport 25 --dport 1024:65535 -j ACCEPT
iptables -A OUPUT -p tcp -m tcp --sport 110 --dport 1024:65535 -j ACCEPT
2 dòng trên chỉ là ghi log lại cho bạn dễ kiểm tra, đây là rules đơn giản thôi, nếu bạn có nhiều card mạng nên (và luôn nên) chỉ ra card output là card nào, input là card nào bằng -o eth0 (hoặc -i eth0 cho input) eth0 là ví dụ.
Bạn có thể dùng tcpdump ghi lại lúc test và dùng wireshack để xem gói tin nó đi như thế nào.
Có gì sai sót, các bạn chỉ giúp nhé