陈同学
微服务
Accelerator
About
# Linux : nfs 设置固定端口 因安全管理需要,内网机器也需要启用防火墙。由于nfs相关服务中存在非固定端口,需要将其设置成固定端口以便于设置防火墙。 本文记录下nfs设置固定端口的过程。 ## 环境信息 机器:**Ubuntu 16.04.2 LTS** ## 设置步骤 nfs涉及到到服务有:**nfs、portmapper、rquotad、mountd、nlockmgr**,nfs和portmapper是固定端口,分别为2049、111,端口信息可以在 */etc/services* 中查到,以portmapper为例: ```shell grep 'portmapper' /etc/services ``` 结果如下,portmapper的tcp/udp都使用了111端口。 ``` sunrpc 111/tcp portmapper rpcbind # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper rpcbind # RPC 4.0 portmapper UDP ``` *注意:不同os之间差异较大,像在 CentOS 7 中,除nlockmgr外,其他都是固定端口* 你可以使用 `rpcinfo -p` 查看所有使用 **rpcbind** 注册的rpc服务。 ```shell 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 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 100024 1 udp 50866 status 100024 1 tcp 45152 status 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 59293 nlockmgr 100021 3 udp 59293 nlockmgr 100021 4 udp 59293 nlockmgr 100021 1 tcp 42315 nlockmgr 100021 3 tcp 42315 nlockmgr 100021 4 tcp 42315 nlockmgr ``` mountd tcp/udp端口为20048、nlockmgr tcp为42315,udp为59293。**重启nfs服务后端口会发生变化**。 在 */etc/services* 的最后添加如下配置,为mountd和rquotad设置固定端口。 ``` mountd 20048/tcp mountd 20048/udp rquotad 875/tcp rquotad 875/udp ``` 因nlockmgr在 */etc/services* 中配置没有效果,我改配置到了 */etc/sysctl.conf* 中。 ``` fs.nfs.nlm_udpport=42315 fs.nfs.nlm_tcpport=42315 ``` 配置后使用 `/sbin/sysctl -p` 生效 */etc/sysctl.conf* 中的配置。 上面的端口信息你可以自由设定。 ## 拓展阅读 碰到点问题就学点Linux,学习下 */etc/services* 和 */etc/sysctl.conf* 两个配置文件。 ### /etc/services 用于记录网络服务名和对应的端口及协议,每一行数据由 **服务名称、端口、协议、别名** 四部分组成。很多服务都会使用这个文件,如果各服务都在这个文件中注册自己的端口信息,那主机上的端口使用情况会十分清晰,容易管理。 下面是熟知的 **ssh** 和 **http** 服务的例子。 ```shell ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp http 80/tcp www # WorldWideWeb HTTP http 80/udp # HyperText Transfer Protocol ``` 该文件也充当配置文件的作用,在应用程序中可以使用服务名和协议获取到对应的端口,使得应用程序不用关心端口号。 >Note:Linux端口范围为0-65535,不同范围含义不同。 > >0 不建议使用 >1-1023 系统保留 >1024-4999 客户端程序自由分配 >5000-65536 服务端程序自由分配 ### /etc/sysctl.conf 系统控制文件,用于配置系统信息。其中配置的内容对应了 **/proc/sys/** 目录下的子目录及文件。 以上面配置的 `fs.nfs.nlm_udpport=42315` 为例: ```shell $ cat /proc/sys/fs/nfs/nlm_udpport 35818 ``` `fs.nfs.nlm_udpport=42315` 这个配置转换成了配置文件,配置中的 **.(点)** 代表目录。 另, * **/proc/** 目录每次在系统启动时都会重新挂载,**/proc/sys** 只是其中的一小部分。 * 修改 /etc/sysctl.conf 后需要使用 `sysctl -p` 来生效配置。
本文由
cyj
创作,可自由转载、引用,但需署名作者且注明文章出处。
文章标题:
Linux: nfs 设置固定端口
文章链接:
https://chenyongjun.vip/articles/73
扫码或搜索 cyjrun 关注微信公众号, 结伴学习, 一起努力