当我运行该命令时netstat -tln
,我看到以下输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::8000 :::* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::443 :::* LISTEN
0.0.0.0:22
我理解除和之外的所有条目127.0.0.1:3306
;为什么这些条目在那里?
我正在使用 iptables 作为我的防火墙工具,想知道是否需要禁用它以及这个条目是如何出现的。
我知道那3306
是针对 mysql 的。但是为什么 SSH 和 Mysql 有特定的 IP 地址,而其他服务器却没有?
答案1
0.0.0.0:22
上面的意思是你在监听所有 ip 地址的 22 端口 (ssh)
127.0.0.1:3306
以上意味着你正在监听端口 3306(mysql)仅用于本地环回
前两个地址与其他地址不同的原因是,它们是 IPv4 地址,而其他地址是 IPv6 地址,从Proto
显示tcp
或的列中可以看出tcp6
对于包含 IPv6 地址的行(tcp6
),它将监听:::
所有 IP 地址,相当于 IPv4 的0.0.0.0
更新
谢谢,但是为什么我禁用了 ipV6 后会获得 IPv6 地址,正如我运行“cat /proc/sys/net/ipv6/conf/all/disable_ipv6”时输出 1 所证明的那样?我在启动 http、https、mysql 和 ssh 服务器时没有做任何特别的事情(或者我认为是这样的)。我本来希望它们所有都有类似的条目,包括 IPv6 和 IPv4。我大致理解输出,但我很难准确理解它。我需要这个来将其与我的 iptables 规则联系起来。– Sam 7 分钟前
您已在网络接口上禁用 IPv6,但这并没有从系统中删除 IPv6;要做到这一点,您需要禁用 IPv6 内核模块。