看板 FreeBSD 關於我們 聯絡資訊
由於這幾天比較忙碌,一直到現在才把結果貼上來分享~ 感謝 giacch 網友的協助測試, 經過一連串的測試,就如 giacch 所描述的, 不過應該不能說是誤用,畢竟兩個方式都可以讓 syslogd 跑起來, 而且在 /etc/rc.d/syslogd 的 script 中,最後也是丟給 /usr/sbin/syslogd 去跑, /etc/rc.d/syslogd 只是做了一些前處理的動作~ 只是後來發現效果不同,以致於 remote log 失敗~ 經過如下: 小弟原先以 /etc/rc.d/syslogd -4 -a 0/0:* 的方式啟動 syslogd, 發現 syslogd 雖然成功啟動,但並沒有接收遠端的封包, 為了確認遠端 udp 封包是否正確傳入,發現 tcpdump 可以正確抓取到封包, 證實遠端並沒有問題,原因一定是出在 syslogd 身上~ google 了一些文件後發現並沒有特別提到兩種啟動方式的差異, 倒是有些提到要在 /etc/rc.conf 加入 syslogd_flags="-4 -a 0.0.0.0/0:*" , 跟著做完,重啟 syslogd、重啟 server,還是無法進行 remote log ~ 後來收到 giacch 網友的 mail 討論,在討論過程中提點了敝人一些可能的問題, 只是情況依舊,有封包,沒紀錄, 最後敝人提議將 log 轉給 giacch 的 server ,由其測試是否能成功寫入紀錄, giacch 同意協助做測試,因此敝人馬上修改 log server 位置, giacch 也將其 syslogd 重啟為接受 remote log, 接著就告知敝人其已經收到寫入的紀錄,並將 log 內容告知敝人, 經確認該 log 內容是正確的,那問題就出在兩台 server 的 syslogd 差在哪裡, 比對後發現敝人使用 /etc/rc.d/syslogd 啟動, 而 giacch 網友使用 /usr/sbin/syslogd 啟動, 接著馬上將 syslogd kill,並從 /usr/sbin/syslogd 重啟 syslogd ......成功了! 追究其原因猜測,在 /etc/rc.d/syslogd 的最後一行為:run_rc_command "$1" 因為 /etc/rc.d/syslogd 是一個 shell script, 如果 script 中沒有把後面參數原封不動的傳給目標檔案去執行, 那這些參數等於是在過程中被丟棄了, 加上 /etc/rc.d/syslogd 只接受 start/stop/restart/force 等參數, 而 /usr/sbin/syslogd 卻不接受上述參數,而接受 -4 -a 0/0:* 之類的參數, 更加確定兩種啟動方式會有極大的差別! 結論就是:remote log 務必從 /usr/sbin/syslogd 下參數。 感謝 giacch 網友的協助測試,讓敝人對 remote log 的疑問有了成果,感謝 giacch! 唯一未解開的疑問是:已經在 rc.conf 中加入 syslogd_flags="-4 -a 0.0.0.0/0:*" 為何 reboot 之後依然無法自動啟用 remote log? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.180.162 ※ 編輯: epstudio 來自: 140.127.180.162 (06/13 17:53)