NFS服务器和NFS客户端的Iptables规则

时间:2014-10-03 21:54:59

标签: iptables nfsclient

如果没有iptables规则,我可以装载NFSSERVER:/PATH,但启用它(firewall / iptables)我无法登录。

[.e.g., after iptables --flush/ firewaalld stop ; mount NFSSERVER:/Path works ]

我不应该禁用/清除firewall / iptables但我可以打开一个端口。打开端口/挂载需要添加的规则是什么?

当前的默认策略是DROP all INCOMING/OUTGOING/FORWARD,并且有一些规则允许来自外部80端口等的wget,

添加NFS服务器端口没有帮助。

iptables -A OUTPUT -p tcp --dport 2049 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 2049 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 2049 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp --sport 2049 -m state --state ESTABLISHED -j ACCEPT

感谢。

PS:这适用于nfs客户端而不是NFS服务器计算机。

2 个答案:

答案 0 :(得分:7)

NFS服务器:

为rquotd(875 / udp; 875 / tcp),lockd(32803 / tcp; 32769 / udp),mountd(892 / udp; 892 / tcp),statd(10053 / udp; 10053 / tcp)配置端口, statd_outgoing(10054 / udp; 10054 / tcp)

    vim /etc/sysconfig/nfs

如果需要,可以通过编辑第5行和第5行来禁用NFS v3和NFS v2支持。 6 / / etc / sysconfig / nfs

    MOUNTD_NFS_V2="no"
    MOUNTD_NFS_V3="no"

保存当前的Iptables规则供以后使用。 (如果您的发行版中没有iptables-save,您可以尝试iptables -S filename)

    iptables-save > pre-nfs-firewall-rules-server

刷新并检查Iptables规则

    iptables -F
    iptables -L

按以下顺序停止和启动NFS及相关服务

   service rpcbind stop
   service nfslock stop
   service nfs stop
   service rpcbind start
   service nfslock start
   service nfs start

确保已配置的NFS及其关联端口显示为之前设置并显示端口号和OSI第4层protcols。 rpcbind(或portmapper)的标准端口号是111 / udp,111 / tcp和nfs是2049 / udp,2049 / tcp。

   rpcinfo -p | sort -k 3 

立即恢复pre-nfs-firewall-rules

   iptables-restore < pre-nfs-firewall-rules-server

为NFS服务器编写iptables规则(注意:必须允许环回适配器,否则你会看到丢弃的数据包,当你重新启动nfs服务时,它会吐出 错误 {正在启动NFS配额:无法注册服务:RPC:超时rpc.rquotad:无法注册(RQUOTAPROG,RQUOTAVERS,udp)。[FAILED]} 用于rquotad守护程序。您可以通过添加一个来检查规则,在INPUT底部的LOG跳转目标或过滤器表的OUTPUT链中

   iptables -P INPUT DROP
   iptables -P OUTPUT DROP 
   iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p udp -m multiport --dports 10053,111,2049,32769,875,892 -m state --state NEW,ESTABLISHED -j ACCEPT 
   iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m multiport --dports 10053,111,2049,32803,875,892 -m state --state NEW,ESTABLISHED -j ACCEPT 
   iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p udp -m multiport --sports 10053,111,2049,32769,875,892 -m state --state ESTABLISHED -j ACCEPT 
   iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m multiport --sports 10053,111,2049,32803,875,892 -m state --state ESTABLISHED -j ACCEPT 
   iptables -I INPUT  -i lo -d 127.0.0.1 -j ACCEPT
   iptables -I OUTPUT  -o lo -s 127.0.0.1 -j ACCEPT
   iptables -L -n --line-numbers

配置NFS导出目录

   vim /etc/exports 
   exportfs -av
   showmount -e
   rpcinfo -p

按以下顺序停止和启动NFS及相关服务

   service rpcbind stop
   service nfslock stop
   service nfs stop
   service rpcbind start
   service nfslock start
   service nfs start

NFS客户端:

保存当前的Iptables规则供以后使用。 (如果您的发行版中没有iptables-save,您可以尝试iptables -S filename)

   iptables-save > pre-nfs-firewall-rules-client

刷新并检查Iptables规则

   iptables -F
   iptables -L

从客户端计算机获取防火墙NFS服务器端口,并记下端口号和OSI第4层protcols。

   rpcinfo -p 'ip-addr-nfs-server' | sort -k 3

立即恢复pre-nfs-firewall-rules

   iptables-restore < pre-nfs-firewall-rules-client

为NFS客户端编写iptables规则(注意:必须允许环回适配器,否则你会看到丢弃的数据包,当你重新启动nfs服务时,它会吐出 错误 {正在启动NFS配额:无法注册服务:RPC:超时rpc.rquotad:无法注册(RQUOTAPROG,RQUOTAVERS,udp)。[FAILED]} 用于rquotad守护程序。您可以通过添加一个来检查规则,在INPUT底部的LOG跳转目标或过滤器表的OUTPUT链中

   iptables -P INPUT DROP
   iptables -P OUTPUT DROP
   iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p udp -m multiport --sports 10053,111,2049,32769,875,892 -m state --state ESTABLISHED -j ACCEPT 
   iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m multiport --sports 10053,111,2049,32803,875,892 -m state --state ESTABLISHED -j ACCEPT 
   iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p udp -m multiport --dports 10053,111,2049,32769,875,892 -m state --state NEW,ESTABLISHED -j ACCEPT 
   iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m multiport --dports 10053,111,2049,32803,875,892 -m state --state NEW,ESTABLISHED -j ACCEPT 
   iptables -I INPUT  -i lo -d 127.0.0.1 -j ACCEPT
   iptables -I OUTPUT  -o lo -s 127.0.0.1 -j ACCEPT
   iptables -L -n --line-numbers

按以下顺序停止和启动NFS及相关服务

   service rpcbind stop
   service nfslock stop
   service nfs stop
   service rpcbind start
   service nfslock start
   service nfs start

列出NFS服务器导出

   showmount -e 'ip-addr-nfs-server'

手动挂载NFS导出(可以使用/ etc / fstab配置持久挂载)

   mount -t nfs ip-addr-nfs-server:/exported-directory /mount-point -o rw,nfsvers=3
   mount -t nfs ip-addr-nfs-server:/exported-directory /mount-point -o rw  --> For NFS4 version

配置autofs,如果nfs导出和ldap用户主目录首选自动挂载(可以设置直接映射和间接映射)

   vim /etc/auto.master    -> specify the mount point and map-name (Eg: auto.nfs)
   vim /etc/map-name
   service autofs stop
   service autofs start

检查挂载的NFS导出

   df -h -F nfs
   mount | grep nfs

列出所有伪root NFS-V4导出目录(NFS Lazy mount)

   ls /net/ip-addr-nfs-server

答案 1 :(得分:6)

如果您只需要NFS版本4(已经超过10年),您就不需要进行@ Sathish的答案中描述的所有工作。只需确保TCP端口2049打开服务器的防火墙,并且客户端的防火墙允许出站流量到服务器上的端口2049.

CentOS 5(也是旧的)有一个很好的explanation为什么NFSv4比v3和v2更加防火墙友好。