ここ1ヶ月、長らく使っていたWiFiルータの一部プロセスが良く死んでいた。
具体的には固定IP割り当てしているやつらは問題ないのだが、DHCPによるIP割り当てがうまく行かず、またルーター管理画面にアクセスしようとしても途中で接続が切断される、という状態になっていた。
復帰方法は電源off/onしかないのだが、まぁ、最近のWiFiに対応するやつにするかと4千円程度のものに交換した。
ルータ交換後の様子を継続的に見るためにCentOS7サーバにログを飛ばしておくか、と設定してみた。
その1 firewallの穴開け
標準ではsyslogポート(514)は開いていないので、開ける。
まず、firewalldが持っている規定のサービス名を確認
[root@blog ~]# firewall-cmd --get-services RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql munin-node murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server [root@blog ~]#
「syslog」が使えそう。あと、今回は不要だけど「syslog-tls」も入れておくか、ということで以下を実行
[root@niselog ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp14s0 sources: services: dhcpv6-client http https ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@niselog ~]# firewall-cmd --permanent --zone=public --add-service=syslog success [root@niselog ~]# firewall-cmd --permanent --zone=public --add-service=syslog-tls success [root@niselog ~]# firewall-cmd --reload success [root@niselog ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp14s0 sources: services: dhcpv6-client http https ssh syslog syslog-tls ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@niselog ~]#
また、「22.5. ロギングサーバーでの RSYSLOG の設定」によればSELinuxによりポート制限をしている事もあるので「semanage port -l」でsyslogに許可されているポートを確認しろ、とのこと。
[root@niselog ~]# semanage port -l | grep syslog syslog_tls_port_t tcp 6514, 10514 syslog_tls_port_t udp 6514, 10514 syslogd_port_t tcp 601, 20514 syslogd_port_t udp 514, 601, 20514 [root@niselog ~]#
その2 rsyslogにポート514での受信許可
標準の/etc/rsyslog.conf ではポート514の使用について下記の様にコメントアウトされています。
# Provides UDP syslog reception #$ModLoad imudp #$UDPServerRun 514 # Provides TCP syslog reception #$ModLoad imtcp #$InputTCPServerRun 514
これのコメントを外します。
# Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
設定後、rsyslogの再起動で/var/log/messagesにログがたまる。
<pre class="wp-block-syntaxhighlighter-code">[root@niselog rsyslog.d]# systemctl restart rsyslog [root@niselog rsyslog.d]# systemctl status -l rsyslog ● rsyslog.service - System Logging Service Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled) Active: active (running) since 金 2019-11-01 11:04:53 JST; 1s ago Docs: man:rsyslogd(8) <blockquote class="wp-embedded-content" data-secret="pQOPhRmYhk"><a href="https://www.rsyslog.com/doc/">RSyslog Documentation</a></blockquote><iframe title="“RSyslog Documentation” — rsyslog" class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" src="https://www.rsyslog.com/doc/embed/#?secret=pQOPhRmYhk" data-secret="pQOPhRmYhk" width="525" height="296" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe> Main PID: 2872 (rsyslogd) CGroup: /system.slice/rsyslog.service mq2872 /usr/sbin/rsyslogd -n 11月 01 11:04:53 niselog systemd[1]: Starting System Logging Service... 11月 01 11:04:53 niselog rsyslogd[2872]: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="2872" x-info="http://www.rsyslog.com"] start 11月 01 11:04:53 niselog systemd[1]: Started System Logging Service. [root@niselog rsyslog.d]#</pre>
その3 ログを分ける
標準だと/var/log/messagesにまとめられてしまうため、ログを分離する。
/etc/rsyslog.d/remote.conf というファイルを新規作成し、下記を書いた。(「gateway」はルータについているホスト名)
if $fromhost == 'gateway' then { -/var/log/remote/gateway.log stop }
これを設定したあと、「systemctl restart rsyslog」で/var/log/remote/gateway.log にログが保存されるようになった。
なお、最初、上記の「-/var/log/remote/gateway.log」ところは「-/var/log/remote/%fromhost%.log」として%fromhost%がホスト名に置き換わることを期待したのですが、実際に作られたログファイル名は「 /var/log/remote/%fromhost%.log 」とそのままでした・・・