我有一个 Fedora 25 x86_64 独立工作站。有东西正在侦听端口 111(通过 nmap 扫描识别):
$ sudo lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 36u IPv4 15170 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 37u IPv4 15171 0t0 UDP *:sunrpc
systemd 1 root 38u IPv6 15172 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 39u IPv6 15173 0t0 UDP *:sunrpc
我使用以下命令禁用了端口上的太阳齿轮:
$ sudo systemctl disable rpcbind
$ sudo systemctl disable sunrpc
Failed to disable unit: No such file or directory
重启后端口仍然打开。
看起来 Sun gear 之外的其他东西想要监听端口 111。或者可能systemd
不尊重我禁用未使用的服务的意愿。或者也许是别的什么......
如何确定正在尝试侦听端口的内容以及如何禁用它?
从下面:
$ sudo systemctl -a | grep -E "rpc|port"
var-lib-nfs-rpc_pipefs.mount loaded active mounted RPC Pipe File System
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
auth-rpcgss-module.service loaded inactive dead Kernel Module supporting RPCSEC_GSS
fedora-import-state.service loaded active exited Import network configuration from initramfs
fedora-readonly.service loaded active exited Configure read-only root support
rpc-gssd.service loaded inactive dead RPC security service for NFS client and server
rpc-statd-notify.service loaded inactive dead Notify NFS peers of a restart
rpc-statd.service loaded inactive dead NFS status monitor for NFSv2/3 locking.
● rpc-svcgssd.service not-found inactive dead rpc-svcgssd.service
rpcbind.service loaded inactive dead RPC Bind
rpcbind.socket loaded active listening RPCbind Server Activation Socket
rpc_pipefs.target loaded active active rpc_pipefs.target
rpcbind.target loaded active active RPC Port Mapper
答案1
当你继续运行时,sudo systemctl disable rpcbind
我Fedora 25
认为有一个警告:
Warning: Stopping rpcbind.service, but it can still be activated by:
rpcbind.socket
所以你可以尝试以下操作:
sudo systemctl stop rpcbind.socket
sudo systemctl disable rpcbind.socket
答案2
这是套接字激活:)。你的怀疑是对的。
您需要禁用rpcbind.socket
.禁用rpcbind.service
- 这是systemctl disable rpcbind
假设的 - 没有效果。
另外,disable
这里只会影响启动时发生的事情。所以如果你想看到立竿见影的改变,你还想跑systemctl stop rpcbind.socket
。
编辑:这个问题看起来和我很相似。 Jeff Schaller 指出您可以使用命令来查看正在实施套接字激活的systemctl list-sockets
端口和服务。systemd
我回去看了看Fedora-Workstation-Live-x86_64-25-1.3.iso
。
rpcbind.service 的状态显示indirect; vendor preset; disabled
。 (还Active: inactive (dead)
)。所以很明显再次禁用(或停止)它不会改变任何东西。
我想indirect
这里是一个提示,提示您要注意激活此单元的其他单元(包括但不限于套接字单元)。一旦套接字单元也停止,它就会从indirect
变为disabled
。
奇怪的是插座单位显示为enabled; vendor preset: disabled
。这意味着 Fedora 25 镜像中已启用 rpcbind.socket,但/lib/systemd/system-preset/80-workstation.preset
或未启用它90-default.preset
。这似乎违反了(当前)政策https://fedoraproject.org/wiki/Packaging:DefaultServices链接到 90-default.preset -
如果默认情况下应启用该服务,则必须将其添加到分发预设文件之一。
这个问题在某个时候已经得到解决。rpcbind.socket
不再启用Fedora-Workstation-Live-x86_64-28-1.1.iso
。
(这并不意味着在从 Fedora 25 磁盘安装的系统上可以自动从网络访问 rpcbind / 端口 111。安装还包括防火墙不允许端口 111)
答案3
端口 111 链接到端口映射。如果您使用 NFS,您很可能会需要它。您可以使用systemctl -a | grep -E "rpc|port"
查看相应服务的名称并将其禁用(我当时无法访问 Fedora 盒子)。
答案4
nfs
此端口由从包中安装的服务激活nfs-utils
。如果您不需要它,最好将其卸载。nfs-utils
通常iscsi-initiator-utils
作为包的依赖项安装libvirt
。这两个软件包都会激活大量您可能不需要的服务和套接字。该命令可用于禁用nfs
和iscsi-initiator-utils
服务。
systemctl disable nfs-client.target
systemctl stop nfs-client.target
systemctl disable rpcbind.socket
systemctl stop rpcbind.socket
systemctl stop rpc_pipefs.target
systemctl stop rpcbind.target
systemctl stop rpcbind.service
systemctl disable rpcbind.service
systemctl stop var-lib-nfs-rpc_pipefs.mount
systemctl stop proc-fs-nfsd.mount
systemctl disable gssproxy.service
systemctl stop gssproxy.service
modprobe -r sunrpc
systemctl disable iscsid.socket
systemctl stop iscsid.socket
systemctl disable iscsiuio.socket
systemctl stop iscsiuio.socket
systemctl disable iscsid.service
systemctl stop iscsid.service
systemctl disable iscsiuio.service
systemctl stop iscsiuio.service