分类: LINUX
2012-05-09 19:59:19
网络环境:
网关:
外网IP:172.20.4.35
内网IP:192.168.10.10
FTP服务器:
IP:192.168.10.30
FTP服务器没有使用默认连接端口号21,而是使用端口号2121,被动端口号:50000-60000
iptables 规则:
#!/bin/bash
#!/bin/bash
# Firewall Script History
# 2009-10-13 liheng
IPT="sudo /sbin/iptables"
WAN1="eth0"
WAN2="eth1"
LAN="eth2"
VPN="tun0"
#Flush Iptables rule chain
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
# Zero Iptables rule chain
$IPT -Z
$IPT -t nat -Z
$IPT -t mangle -Z
# Settup Iptables default policy
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP
#Allow loopback traffic
$IPT -A INPUT -i lo -j ACCEPT
$IPT -t nat -A PREROUTING -i $WAN1 -p tcp --sport 1024:65535 -d 172.20.4.35 --dport 2121 -j DNAT --to-destination 192.168.10.30
$IPT -t nat -A PREROUTING -i $WAN1 -p tcp --sport 1024:65535 -d 172.20.4.35 --dport 20 -j DNAT --to-destination 192.168.10.30
$IPT -t nat -A PREROUTING -i $WAN1 -p tcp --sport 1024:65535 -d
172.20.4.35 --dport 50000:60000 -j DNAT --to-destination 192.168.10.30
$IPT -t nat -A POSTROUTING -d 192.168.10.30 -p tcp --dport 2121 -j SNAT --to 192.168.10.10
$IPT -t nat -A POSTROUTING -d 192.168.10.30 -p tcp --dport 20 -j SNAT --to 192.168.10.10
$IPT -t nat -A POSTROUTING -d 192.168.10.30 -p tcp --dport 50000:60000 -j SNAT --to 192.168.10.10
$IPT -A FORWARD -i $WAN1 -o $LAN -p tcp --sport 1024:65535 -d
192.168.10.30 --dport 39176 -m state --state NEW,ESTABLISHED,RELATED -j
ACCEPT
$IPT -A FORWARD -i $WAN1 -o $LAN
-p tcp --sport 1024:65535 -d 192.168.10.30 --dport 20 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $WAN1 -o $LAN -p tcp --sport 1024:65535 -d
192.168.10.30 --dport 50000:60000 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $LAN -o $WAN1 -p tcp --sport 2121 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $LAN -o $WAN1 -p tcp --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $LAN -o $WAN1 -p tcp --sport 50000:60000 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
注:这里有一点需要注意,也就是红色字体标示的位置,之前没有加这几行的时候,NAT总是连接不上内网的FTP服务器,连上的也是报错,错误编 号: 227 Entering Passive Mode (192.168.10.30,105,20),思索很久,始终是不得要领,后查看FTP服务器配置,发现这一 句"connect_from_port_20=YES",想想就将那几行添加上去了,然后再重新加载 ip_nat_ftp ,ip_conntrack_ftp 模块,再加上后面的FTP配置文件的加上两个参数,重启后,果然就可以了.
FTP服务器配置:
anonymous_enable=NO
local_enable=YES
local_max_rate=10000000
anon_max_rate=10000000
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftp.log
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
pasv_addr_resolve=yes
pasv_address=172.20.4.35
pasv_min_port=50000
pasv_max_port=60000
guest_enable=YES
guest_username=ftpvirtuer
user_config_dir=/etc/vsftpd/vuser_conf
userlist_enable=YES
tcp_wrappers=YES
listen_port=2121
idle_session_timeout=300
data_connection_timeout=5
accept_timeout=10
connect_timeout=10
use_localtime=YES
max_clients=20
max_per_ip=10
注:
pasv_addr_resolve=yes //允许vsftpd去欺骗客户
pasv_address=172.20.4.35 //让vsftpd以这个地址去欺骗客户
重启vsftpd后,我们再从客户端测试发现也可以正常使用.
如果没有加上以上两句的话,连接FTP时会报错
按以上内容设置后