journalctl
查看系統日志中的網絡連接信息journalctl
是Debian(基于systemd的系統)查看系統日志的核心工具,可篩選出與網絡相關的日志條目。常用命令:
journalctl -xe
(-x
顯示詳細信息,-e
跳轉至日志末尾)。journalctl -u sshd
(替換sshd
為目標服務名,如nginx
、apache2
)。journalctl --since "2025-09-01" --until "2025-09-02"
(查看指定時間段內的日志)。ss
/netstat
命令查看當前網絡連接狀態這兩個命令用于實時查看系統的網絡連接、端口監聽情況,是排查網絡問題的常用工具:
ss
命令(推薦,更高效):
ss -tulnp
(-t
顯示TCP,-u
顯示UDP,-l
僅顯示監聽端口,-n
以數字形式顯示地址/端口,-p
顯示關聯進程)。ss -tulnp | grep ":80"
(如查看HTTP端口80的連接)。netstat
命令(傳統工具,部分系統需安裝):
ss
類似:netstat -tulnp
(功能一致,但性能略低)。Debian的系統日志文件存儲了網絡連接的詳細事件,可通過grep
篩選關鍵信息:
/var/log/syslog
(包含大部分系統事件,如網絡接口變化、連接嘗試)。
grep "connection" /var/log/syslog
(查找包含“connection”的日志行,如SSH連接、端口監聽)。/var/log/auth.log
(記錄需要認證的網絡連接,如SSH登錄嘗試)。
grep "sshd" /var/log/auth.log
(查看SSH服務的所有日志,包括登錄成功/失敗記錄)。/var/log/kern.log
(記錄內核層面的網絡事件,如接口狀態變化、防火墻規則觸發)。tcpdump
捕獲網絡數據包(詳細流量分析)若需要深入分析網絡流量的具體內容(如數據包頭部、載荷),可使用tcpdump
工具:
sudo tcpdump -i any
(-i any
表示監聽所有網絡接口,按Ctrl+C
停止)。sudo tcpdump -i eth0 port 80 -w capture.pcap
(-i eth0
指定接口,port 80
過濾HTTP端口,-w capture.pcap
將流量保存到文件,后續可用Wireshark分析)。sudo tcpdump -i any host 192.168.1.100
(僅捕獲與指定IP的通信)。iptables
+syslog-ng
自定義記錄連接日志(可選)若需要長期保存連接日志(如防火墻規則觸發的連接記錄),可配置iptables
和syslog-ng
:
sudo apt update && sudo apt install iptables syslog-ng
。syslog-ng
:編輯/etc/syslog-ng/syslog-ng.conf
,添加以下內容定義日志格式和目的地:log_format connection 'remote_addr - remote_user [time] "request" status body_bytes_sent "http_referer" "http_user_agent"';
destination connection { file("/var/log/connections.log" mode "append"); };
filter connection { program("iptables"); };
log { source(src); filter(connection); destination(connection); };
iptables
記錄連接:編輯/etc/iptables/rules.v4
,添加規則(如記錄所有輸入連接):-A INPUT -j LOG --log-prefix "iptables: "
sudo systemctl restart syslog-ng netfilter-persistent
(netfilter-persistent
用于保存iptables
規則)。tail -f /var/log/connections.log
(實時查看連接日志)。journalctl
、ss
、tcpdump
)需要root
權限,建議在命令前加sudo
。/var/log/syslog
)會定期輪轉(如按天分割),可通過logrotate
工具管理歷史日志。