【问题标题】:Why ipv6 stack (on linux) can interpret ipv4 adresses? [closed]为什么 ipv6 堆栈(在 linux 上)可以解释 ipv4 地址? [关闭]
【发布时间】:2020-06-10 14:49:39
【问题描述】:

我认为双栈 ipv4 / ipv6 是必要的,nginx、apache、ssh 在 ipv4 和 ipv6 接口上都监听。 但是在使用 tvheadend 之后,我发现即使它只监听 ipv6 堆栈,它也会响应 ipv4 地址……为什么? 这是证据:

sudo lsof -i -P -n

tvheadend 3676  hts   33u  IPv6 679854      0t0  TCP 192.168.0.8:9981->192.168.0.4:57868 (ESTABLISHED)

ipv6 堆栈使用 192.168.x.x ipv4 地址...

而且 ipv4 上没有监听:

sudo lsof -i -P -n | grep LISTEN | grep tvheadend

tvheadend 3676  hts    7u  IPv6 439770      0t0  TCP *:9981 (LISTEN)

tvheadend 3676  hts    8u  IPv6 439773      0t0  TCP *:9982 (LISTEN)


sudo netstat -tlnp | grep tvheadend

tcp6       0      0 :::9981                   :::*                    LISTEN      3676/tvheadend
tcp6       0      0 :::9982                   :::*                    LISTEN      3676/tvheadend

【问题讨论】:

  • netstat -tlnp | grep tvheadend 会输出什么?
  • 注释不利于多行输出。请尝试编辑您的问题。
  • lsof output TCP *:9981 (LISTEN) 显示它正在侦听所有接口,就像netstat:::9981 一样

标签: linux ipv6 ipv4


【解决方案1】:

如果 IPv4 和 IPv6 堆栈正在工作并且仅存在 IPv6 侦听器,则在许多(如果不是所有主要的)操作系统(例如 Linux)上,默认情况下发送到 v6 并将 v4 发件人地址映射到 ipv6 是正常的。 IPV6_V6ONLY 套接字选项可用于大多数操作系统,如 this documentation 中所示禁用此选项。

【讨论】:

  • 很好的答案,谢谢,我在 tvheadend Web 界面上看到了连接的客户端的“::ffff:192.168.0.x”样式地址,但即使看起来很奇怪,我也没有不要用谷歌搜索,因为此时我的 tvheadend 有其他问题。谢谢你的解释:它是 IPv4 映射地址......不知道它们......
  • @shrd 乐于提供帮助,为了避免在未来遇到类似这样的问题,我想您在技术上必须添加一个测试服务器以使其纯粹针对主题,或者可能使用 socat 作为示例服务器使它成为一个脚本问题..
猜你喜欢
  • 2021-07-30
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 2019-06-24
  • 2015-04-01
  • 1970-01-01
相关资源
最近更新 更多