主机 ftp 服务不在 port 21 的话,请使用下列方式进行调整:
- modprobe ip_conntrack_ftp ports=21,30000
- iptables -P INPUT DROP
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables -A INPUT -i lo -j ACCEPT
- iptables -A INPUT -p tcp --dport 21 -j ACCEPT
- iptables -A INPUT -p tcp --dport 30000 -j ACCEPT
复制代码
也就是主机本身提供 ftp 服务分别在 port 21 与 30000 上,让 ip_conntrack_ftp 这个 ftp helper 能够正常提供 ftp 用户端使用 passive mode 存取而不会产生问题。
若是需要允许主机可以接受 ping 程式测试这台机器是否可以存取的话,可以搭配使用:
- iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
1. 一般建议单纯化的 NAT 服务配置语法为何?
这边是假设对外的介面为 eth0,对内介面为 eth1,该对内网段的 ip 范围是 192.168.1.0/24。
若是预设的 FORWARD chain 本身为 ACCEPT 的话,配置语法使用为:
- iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j MASQUERADE
- echo 1 > /proc/sys/net/ipv4/ip_forward
复制代码
若是预设的 FORWARD chain 本身为 DROP 的话,配置语法使用为:
- iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j MASQUERADE
- iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
- echo 1 > /proc/sys/net/ipv4/ip_forward
复制代码
当然,请不要忘记前面谈到的议题,也就是搭配先使用好 -F 与 -X 这类项目。还有预设 FORWARD chain 为 DROP 的话,考虑是否也开放允许 echo-request 这类 icmp 协定封包能够允许由内部网段传送出去。
2. 透过 NAT 上网的内部 ip 主机,ftp 连结存取错误?
该问题点与前面谈到 ftp 问题与搭配使用 -m state --state RELATED 配置有关系。由于目前要的是 NAT 下 ftp 连线的追踪功能,所以需要搭配挂入ip_nat_ftp 该 module 才可以正确提供追踪机制。
所以经过该修改配置,于预设的 FORWARD chain 本身为 ACCEPT 的话,配置语法使用为:
- modprobe ip_nat_ftp
- iptables -A POSTROUTING -t nat -o eth0 -s 192.168.1.0/24 -j MASQUERADE
- iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- echo 1 > /proc/sys/net/ipv4/ip_forward
复制代码
搭配 ip_nat_ftp module 后,如此于 FORWARD chain 内使用的 RELATED 参数才会有效用。
阅读(1603) | 评论(0) | 转发(0) |