停用systemd套接字激活的默认端口

分享于 

3分钟阅读

互联网

  繁體

问题:

我在CentOS 8.2上运行了一个Apache Server,它的套接字由systemd套接字激活管理,以下是当前的systemd套接字配置:


root@server6:~# systemctl status httpd.socket


● httpd.socket - Apache httpd Server Socket


 Loaded: loaded (/usr/lib/systemd/system/httpd.socket; enabled; vendor preset: disabled)


 Drop-In: /etc/systemd/system/httpd.socket.d


 └─20-redir8016.conf, 30-listen8017ssl.conf, override.conf


 Active: active (running) since Fri 2020-11-20 14:45:13 UTC; 1 weeks 0 days ago


 Docs: man:httpd.socket(8)


 Listen: [::]:80 (Stream)


 [::]:8001 (Stream)


 [::]:8002 (Stream)


 [::]:8003 (Stream)


 Tasks: 0 (limit: 820374)


 Memory: 0B


 CGroup: /system.slice/httpd.socket



可以看到,端口80已启用,httpd.socket(8)的manpage只描述如何添加另一个端口,而不是如何删除默认端口,端口80未在/etc/httpd的配置文件中配置。

如何停用端口80?默认配置存储在何处?


答案1:

可以使用以下方法列出systemd用于套接字的文件:


$ systemctl cat httpd.socket




# /usr/lib/systemd/system/httpd.socket


[Unit]


Description=Apache httpd Server Socket


[Socket]


ListenStream=80


[Install]


WantedBy=sockets.target



# /usr/lib/systemd/system/httpd.socket.d/10-listen443.conf


[Socket]


ListenStream=443



可以看到,2个命名文件被使用(在系统上)监听端口80和443,你可以使用sudo systemctl edit httpd.socket 要添加更多配置,要实际取消现有配置,需要使用标准systemd方法来输入关键字的空值,换句话说,ListenStream=,后跟需要的附加值:


[Socket]


# cancel existing port 80 (and 443)


ListenStream=


ListenStream=8001


ListenStream=8002


ListenStream=8003



man systemd.syntax (或在旧版本中使用man systemd.unit )说



SYS  系统  act  DEF  soc  socket