首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables/netfilter:"nf_nat_ftp“不适合最近的Linux内核

iptables/netfilter:"nf_nat_ftp“不适合最近的Linux内核
EN

Unix & Linux用户
提问于 2017-10-16 09:07:43
回答 1查看 3.8K关注 0票数 1

我面临的问题是Linux内核4.10-28-泛型,嵌入在Ubuntu16.04.02-LTE中。我的机器有两个以太网适配器,即:

enp0s3: 198.168.56.2 (内部网络)

enp0s8: 172.22.181.41 (外部网络)

在连接到enp0s3的内部网络中,有一个FTP服务器和一个telnet服务器,我想从通过enp0s8连接的外部网络访问。

请求FTP模式处于活动状态。

为了完成这一任务,我使用了以下iptables规则:

代码语言:javascript
复制
modprobe nf_conntrack_ftp  
modprobe nf_nat_ftp  
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"  

## Masquerade settings
iptables -A POSTROUTING -t nat -o enp0s3 -j MASQUERADE
iptables -A POSTROUTING -t nat -o enp0s8 -j MASQUERADE  

## ftp rules
iptables -t nat -I PREROUTING  -p tcp -m tcp --dport 20         -i enp0s8 -j DNAT --to-destination 192.168.56.2:20 
iptables -t nat -I PREROUTING  -p tcp -m tcp --dport 21         -i enp0s8 -j DNAT --to-destination 192.168.56.2
iptables -t nat -I PREROUTING  -p tcp -m tcp --dport 1024:65535 -i enp0s8 -j DNAT --to-destination 192.168.56.2:1024-65535

## telnet rules
iptables -t nat -I PREROUTING -p tcp -m tcp --dport 23 -i enp0s8 -j DNAT --to-destination 192.168.56.2`

这些规则适用于具有Linux内核2.6.32-38-泛型的Ubuntu-10,但是新的内核数据连接无法建立:当客户端发出端口命令时,服务器接收外部网络的IP地址,而不是内部网络的IP地址。根据运行在服务器端的"netstat“,模块"nf_nat_ftp”似乎不能很好地工作,即在将命令转发给服务器之前,不能将客户机IP地址(外部地址)替换为输入接口enp0s8 (内部地址)的地址。由于这个原因,服务器在试图与外部IP地址(SYN状态)建立连接时被卡住了。

没有问题的FTP工作在无源模式和与电信网络连接以及。

你能给我一个解决这个问题的建议吗?这是一种回归,还是预期我会根据一些新的要求修改iptables规则?

提前谢谢你!

向你问好,斯特凡诺

EN

回答 1

Unix & Linux用户

发布于 2017-10-22 14:15:21

我已经在superuser.com上回答

基本上,较新的内核( >= 4.7 )反对自动助手模块的端口分配,以支持显式规则。

为了得到旧的行为而做的短暂修正:

代码语言:javascript
复制
echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper

更好的长期修复(需要更多的工作,但提供更好的控制):

有关更多信息,请参见iptables Extensions8手册页中的CT目标描述。

也可以阅读这个博客中的例子:

https://home.regit.org/netfilter-en/secure-use-of-helpers/

重要注意:许多FTP规则没有任何意义(你只需要第二条规则)。例如,没有这样的--dport 20。永远不会。Active FTP使用源端口20,而不使用目标端口20。nf_conntrack_ftp/nf_nat_ftp已经处理了所有这些。根本不要尝试处理相关的关系,这是助手的工作。

如果是防火墙,那么在防火墙规则(filter而不是nat)中,您只需要通常的-m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT (但是为了长期的解决方案也要阅读博客)。也许你没有把所有的规则都放进去,或者你只是没有使用任何防火墙?

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/398359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档