有两台机器,其中一台A 有内网和外网,B机器只有内网。
想达到的目的: 通过A机器的外网去访问B机器的ftp(21)
环境:
A机器外网IP为 123.234.12.22(eth1) 内网IP为 192.168.10.20 (eth0)
B机器内网为 192.168.10.21
实现方法:
1. 让你的linux支持ftp的端口转发
modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT
modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块
2. 在A机器上打开端口转发功能
vi /etc/sysctl.conf
使 net.ipv4.ip_forward = 1
sysctl -p
3. 在A机器上创建iptables规则
iptables -t nat -I PREROUTING -d 123.234.12.22 -p tcp --dport 21 -j DNAT --to 192.168.10.21:21 (把访问外网21端口的包转发到内网ftp服务器)
iptables -t nat -I POSTROUTING -d 192.168.10.21 -p tcp --dport 21 -j SNAT --to 192.168.10.20 (把到内网ftp服务器的包回源到内网网卡上,不然包只能转到ftp服务器,而返回的包不能到达客户端)
想达到的目的: 通过A机器的外网去访问B机器的ftp(21)
环境:
A机器外网IP为 123.234.12.22(eth1) 内网IP为 192.168.10.20 (eth0)
B机器内网为 192.168.10.21
实现方法:
1. 让你的linux支持ftp的端口转发
modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT
modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块
2. 在A机器上打开端口转发功能
vi /etc/sysctl.conf
使 net.ipv4.ip_forward = 1
sysctl -p
3. 在A机器上创建iptables规则
iptables -t nat -I PREROUTING -d 123.234.12.22 -p tcp --dport 21 -j DNAT --to 192.168.10.21:21 (把访问外网21端口的包转发到内网ftp服务器)
iptables -t nat -I POSTROUTING -d 192.168.10.21 -p tcp --dport 21 -j SNAT --to 192.168.10.20 (把到内网ftp服务器的包回源到内网网卡上,不然包只能转到ftp服务器,而返回的包不能到达客户端)
0
本帖最后由 sincethen 于 2015-9-26 19:13 编辑
有几点问题:FTP分为主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机
所以第三步
3. 在A机器上创建iptables规则
把外网访问的20和21端口的包转发到内网ftp服务器
iptables -t nat -I PREROUTING -d 123.234.12.22 -p tcp --dport 20,21 -j DNAT --to 192.168.10.21
内网ftp服务器返回包进行源地址转换,这里是 -s 不是-d ,端口号要去掉
iptables -t nat -I POSTROUTING -s 192.168.10.21 -p tcp -j SNAT --to-source 192.168.10.20
有几点问题:FTP分为主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机
所以第三步
3. 在A机器上创建iptables规则
把外网访问的20和21端口的包转发到内网ftp服务器
iptables -t nat -I PREROUTING -d 123.234.12.22 -p tcp --dport 20,21 -j DNAT --to 192.168.10.21
内网ftp服务器返回包进行源地址转换,这里是 -s 不是-d ,端口号要去掉
iptables -t nat -I POSTROUTING -s 192.168.10.21 -p tcp -j SNAT --to-source 192.168.10.20
编辑回复