Daemon
如何檢查守護程序正在監聽哪個介面?
例如:一個 sshd 被配置為只監聽 wlan0。所以。除了檢查 sshd_config 之外,我如何檢查守護程序是否正在偵聽什麼介面?netstat 可以嗎?如何?(作業系統:openwrt 或科學 linux 或 openbsd)
更新:
我認為 sshd 可能僅限於一個介面……但沒有……(192.168.1.5 在 wlan0 上……)
# grep ^ListenAddress /etc/ssh/sshd_config ListenAddress 192.168.1.5:22 # # lsof -i -n -P COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 23952 root 3u IPv4 1718551 0t0 TCP 192.168.1.5:22 (LISTEN) # # ss -lp | grep -i ssh 0 128 192.168.1.5:ssh *:* users:(("sshd",23952,3)) # # netstat -lp | grep -i ssh tcp 0 0 a.lan:ssh *:* LISTEN 23952/sshd #
(您可能需要
ip
在 openwrt 上安裝軟體包(v12 / 姿態調整)ifconfig/netstat 等被認為是deprecated,所以你應該使用(作為root)
ss -nlput | grep sshd
顯示包含字元串的正在執行的程序
sshd
正在偵聽的 TCP/UDP 套接字
-n
沒有名稱解析的埠-l
僅監聽套接字-p
顯示程序監聽-u
顯示 udp 套接字-t
顯示 tcp 套接字然後你得到一個像這樣的列表:
tcp LISTEN 0 128 *:22 *:* users:(("sshd",3907,4)) tcp LISTEN 0 128 :::22 :::* users:(("sshd",3907,3)) tcp LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",4818,9)) tcp LISTEN 0 128 ::1:6010 :::* users:(("sshd",4818,8))
有趣的是第 5 列顯示了 IP 地址和埠的組合:
*:22
在每個可用的 IPv4 地址上偵聽埠 22:::22
在每個可用 IP 地址的埠 22 上偵聽(我不寫 IPv6,因為根據RFC 6540 ,IP 是 IPv6 )127.0.0.1:6010
偵聽 IPv4 地址 127.0.0.1 (localhost/loopback) 和埠 6010::1:6010
偵聽 IP 地址 ::1(完整表示法為 0:0:0:0:0:0:0:1,也是 localhost/loopback)和埠 6010然後,您想知道哪些介面具有 IPv4 地址(涵蓋 1。)
ip -4 a # or "ip -4 address" # or "ip -4 address show"
或 IP 地址(覆蓋 2.)
ip -6 a # or "ip -6 address # or "ip -6 address show
(如果您不添加 IP (
-6
) 或 IPv4 (-4
) 選項,則會顯示兩者)您還可以查看輸出並蒐索例如
127.0.0.1
或任何其他 IP/IPv4 地址# here a demo where i show all addresses of the device "lo" (loopback) ip a show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever
inet
以並inet6
顯示這些 IP 綁定到此介面的行開頭的行,每個介面可能有許多這樣的行:he-ipv6: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN link/sit 192.0.2.1 peer 192.0.2.3 inet6 2001:db8:12::1/64 scope global valid_lft forever preferred_lft forever inet6 2001:db8::2/64 scope global valid_lft forever preferred_lft forever inet6 fe80::1111:1111/128 scope link valid_lft forever preferred_lft forever
並在腳本中:
address="127.0.0.1" for i in $(grep ':' /proc/net/dev | cut -d ':' -f 1 | tr -d ' ') ; do if $(ip address show dev $i | grep -q "${address}") ; then echo "${address} found on interface ${i}" fi done
(替換“127.0.0.1”)