我认为必须使用双堆栈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
如果IPv4和IPv6堆栈正常工作,并且仅存在IPv6侦听器,则在许多(如果不是所有主要的)主要操作系统上,默认情况下,发送到v6并仅将v4发送者地址映射到ipv6是正常的。 IPV6_V6ONLY
套接字选项可在大多数操作系统上使用,以禁用此功能,如this documentation所示。