如何配置 nfs 和 iptables

如何配置 nfs 和 iptables

我正在尝试设置 NFS 共享 + iptables,以便可以实际访问它。我找不到任何最新/可用的文档/文章。您能解释一下或分享正确文档的链接吗?我对 nfs/iptables 一无所知,每次我决定摆脱iptables -F“解决方案”时,我都会遇到文档障碍。

  1. 我不知道我使用的是哪个版本的 nfs。尝试使用“nfsstat –s”或“nfsstat –c”​​不会打印任何相关信息。

  2. 但我认为它将是版本 4。我尝试遵循(迄今为止我发现的最好的文章/文档):

https://prefetch.net/blog/2010/11/02/firewalling-a-linux-nfs-server-with-iptables/

并且 /etc/sysconfig/nfs 中的静态端口设置被忽略,并且缺少几个服务/systemd 单元。

您能否推荐一些关于设置 nfs 和 iptables 的阅读材料,这些材料易读、易懂且最新?如果 iptables 已过时,应禁用它以支持其他更新的解决方案,请分享如何操作。

编辑:在防火墙配置中,区域是公共的,并且 nfs 属于受信任的服务,它们“可以从所有主机和网络访问”(但事实并非如此)。

rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  58868  status
    100024    1   tcp  51719  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100021    1   udp  54703  nlockmgr
    100021    3   udp  54703  nlockmgr
    100021    4   udp  54703  nlockmgr
    100021    1   tcp  35247  nlockmgr
    100021    3   tcp  35247  nlockmgr
    100021    4   tcp  35247  nlockmgr

我在某处找到了:

firewall-cmd --permanent --add-port=2049/udp ; firewall-cmd --permanent --add-port=2049/tcp; firewall-cmd --permanent --add-port=111/udp; firewall-cmd --permanent --add-port=111/tcp

这可能与上面的端口相关,但没有成功,不起作用。直到我这样做,电视才能连接iptables -F

答案1

iptables -F刷新所有规则,这类似于禁用防火墙。

我从未使用命令来管理我的 iptable 规则,我总是手动编辑配置文件“/etc/sysconfig/iptables”。我还总是删除防火墙,直接使用 iptables,因为防火墙是管理 iptables 的前端。

如果您需要有关 Firewalld 的特定文档,请查看“https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7“其对 Fedora 的作用应该是一样的。

如果是我的话,我会做以下事情:

  1. 通过运行禁用firewalldsudo systemctl disable firewalld*
  2. 运行以下命令安装 iptables 服务sudo dnf install iptables-services
  3. 启用 iptables 在启动时启动sudo systemctl enable iptables
  4. 编辑你的 iptables 配置文件,如下所示

/etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
-A INPUT -p udp -m udp --dport 2049 -j ACCEPT
-A INPUT -p udp -m udp --dport 111 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

您可以使用以下方法之一轻松制定一条综合规则来接受来自本地网络或电视的所有流量:

  • 所有网络流量:A INPUT -s 192.168.1.0/24 -j ACCEPT其中 192.168.1.0 是您的网络,/24 是您的子网。
  • 仅您的电视:-A INPUT -s 192.168.1.22/32 -j ACCEPT其中 192.168.1.22 是您的电视的 IP 地址。

之后,只需保存文件并启动 itpables 服务sudo systemctl start iptables

相关内容