Tôi đang cố gắng chuyển tiếp một máy chủ FTP có IPTables. FTP-Server đang chạy trên hộp Windows 2008 (Cerberus).
Chi tiết Hộp Win:
- IP: 192.168.220.51
- Cổng FTP: 21
- Cổng PASV: 11000-13000
Máy chủ FTP hoạt động tốt trong mạng LAN.
Bộ định tuyến đang hoạt động tốt cho các máy khách khác (Phục vụ NAT, DHCP, Tường lửa, ...). Tôi cần chuyển tiếp dịch vụ FTP ra thế giới bên ngoài, nhưng tôi không thể sử dụng các cổng 20-21 (đã được sử dụng).
Tôi đã thử điều này, nhưng nó không hoạt động:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 2121 -j DNAT --to 192.168.220.51:21
Cấu hình IPTables hiện tại:
[root@router ~]# service iptables status
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
2 MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 127.0.0.1 0.0.0.0/0
2 DROP all -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:68
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1194
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
11 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
12 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:1194
13 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
14 DROP udp -- 0.0.0.0/0 0.0.0.0/0
15 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời :-).
Bounty-Edit : Tôi chưa thể tìm ra điều này, bất kỳ trợ giúp sẽ được đánh giá rất cao.
EDIT2
Bây giờ tôi có thể telnet vào máy chủ FTP của mình, sau khi chạy các lệnh:
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 2121 -j DNAT --to 192.168.220.51:21
Tôi đang bắt đầu đến đó ... Tôi nghĩ rằng tôi chỉ cần làm cho các Cổng PASV của tôi hoạt động ngay bây giờ ...
EDIT3: Thông tin thêm
[root@router ~]# iptables -L -n -v
Chain INPUT (policy ACCEPT 3251 packets, 154K bytes)
pkts bytes target prot opt in out source destination
540 48534 ACCEPT all -- * * 127.0.0.1 0.0.0.0/0
4270K 5625M ACCEPT all -- * * 192.168.220.0/24 0.0.0.0/0
0 0 DROP all -- eth1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:68
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1194
65 8487 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
8 404 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194
63870 81M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
974 224K DROP udp -- * * 0.0.0.0/0 0.0.0.0/0
638 34956 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02
Chain FORWARD (policy ACCEPT 3578K packets, 3355M bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 2275K packets, 703M bytes)
pkts bytes target prot opt in out source destination
[root@router ~]# iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 33954 packets, 2595K bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2121 to:192.168.220.51:21
Chain POSTROUTING (policy ACCEPT 5925 packets, 699K bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * eth1 0.0.0.0/0 0.0.0.0/0
27170 1785K MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 5777 packets, 457K bytes)
pkts bytes target prot opt in out source destination
Giải pháp
Đây là cách tôi đã làm nó, có thể không đẹp lắm, nhưng nó hoạt động.
[root@router ~]# iptables -t nat -I PREROUTING -p tcp --dport 2121 -j DNAT --to 192.168.220.51:2121
[root@router ~]# iptables -I FORWARD -p tcp -d 192.168.220.51 --dport 2121 -j ACCEPT
[root@router ~]# iptables -t nat -I PREROUTING -p tcp --dport 11000:13000 -j DNAT --to 192.168.220.51:11000-13000
[root@router ~]# iptables -I FORWARD -p tcp -d 192.168.220.51 --dport 11000:13000 -j ACCEPT
Một số lưu ý thêm: Máy chủ FTP đang nghe trên bot 21 và 2121 và phạm vi PASV được đặt từ 11000 đến 13000
ip_conntrack_ftp
và ip_nat_ftp
các mô-đun hạt nhân được tải. FTP là một giao thức thú vị phải xử lý đằng sau cổng tường lửa / NAT. Bạn có thể thấy dễ dàng hơn khi chỉ sử dụng sftp (SSH FTP) chỉ sử dụng cổng 22 và được mã hóa (an toàn hơn rất nhiều). FileZilla là một ứng dụng FTP miễn phí tuyệt vời hỗ trợ SFTP.
lsmod | grep -i ftp
gì?