Tôi đang thiết lập máy chủ Ubuntu 11.10 để hoạt động như tường lửa cho mạng chạy một số trang web SSL khác nhau. Ý tưởng khá phổ biến: có tất cả IP công khai cho mỗi trang web được đặt bí danh cho giao diện chung trên tường lửa và sử dụng iptables / NAT để chuyển tiếp kết nối đến các máy chủ web. Tôi đang có một thời gian để có được điều này khá đơn giản để làm việc mặc dù.
Nói rằng tôi có giao diện công khai trên tường lửa:
eth0 25.25.25.25
Và tôi muốn đặt bí danh một IP mới cho giao diện chung đó:
ifconfig eth0:0 25.25.25.26
Sau đó tôi thấy giao diện được tạo và tôi có thể ping nó từ các máy chủ khác. Càng xa càng tốt. Bây giờ tôi có máy chủ web của mình ngồi ở phía DMZ của mạng, có thể truy cập bằng tường lửa nhưng không công khai. Giả sử máy chủ web nội bộ là 172.16.2.1. Vì vậy, tôi tạo một quy tắc NAT như sau:
iptables -t nat -A PREROUTING -i eth0 -d 25.25.25.26 -j DNAT - đến đích 172.16.2.1
Nó chỉ không muốn làm việc. Nếu tôi chạy tcpdump trên giao diện công cộng, nó sẽ thấy lưu lượng truy cập đến, nhưng iptables sẽ không NAT nó đến đích.
Nó sẽ hoạt động tốt nếu tôi sử dụng IP không có bí danh, chẳng hạn như 25.25.25.25. Tôi đã đọc rằng iptables không thích làm việc với các giao diện ảo và bỏ qua chúng. Điều đó tốt, nhưng nó vẫn nên hoạt động với "eth0" thay vì "eth0: 0". Trong trường hợp của tôi, iptables không phàn nàn nếu tôi cố gắng sử dụng "eth0: 0" nhưng nó không tạo ra sự khác biệt nào.
Tôi đã sử dụng OpenBSD từ lâu rồi, vì vậy tôi rất thoải mái khi thiết lập điều tương tự với pf. Nhưng nhiều năm trước tôi đã từng làm điều này với một hộp RedHat và nó hoạt động rất tốt. Có điều gì đó đã thay đổi? Phải có một cách để làm điều này. Tôi đã thấy một số ví dụ từ những người khác nói rằng bạn chỉ cần đảm bảo rằng bạn chỉ định thiết bị chính (eth0) thay vì sử dụng eth0: 0. Nhưng tôi chẳng có gì cả.
Ồ, và để loại trừ rằng đây chỉ là sự cố lọc, tôi đã vô hiệu hóa hoàn toàn tất cả các quy tắc bộ lọc:
iptables -F
iptables -X
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
Có ý kiến gì không? Tôi chắc chắn không có người mới khi nói đến iptables, nhưng vấn đề này đang bắt đầu khiến tôi cảm thấy như một.
FORWARD
chuỗi là không một phần củanat
bảng. Đề xuất 'chỉnh sửa' của bạn sẽ không được chấp nhận bởiiptables
- thay vào đó, nó sẽ cung cấp cho bạn một thông báo lỗi.