我工作的 ISP 正在建立一个内部 IPv6 网络,为最终连接到 IPv6 互联网做准备。因此,该网络中的一些服务器在运行时默认尝试通过其 IPv6 地址连接到 security.debian.org apt-get update,这导致每当我下载任何类型的更新时都必须等待很长时间.
有没有办法告诉 apt 是更喜欢 IPv4 还是完全忽略 IPv6?
在的sysctl,所述/proc/sys/net/ipv[46]/conf/键具有以下子项:all,default,和每个网络接口的密钥。例如,在具有单个网络接口 eth0 的机器上,它将如下所示:
iserv ~ # ll /proc/sys/net/ipv[46]/conf/
/proc/sys/net/ipv4/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 eth0/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 lo/
/proc/sys/net/ipv6/conf/:
insgesamt 0
dr-xr-xr-x 0 root root 0 12. Sep 23:30 all/
dr-xr-xr-x 0 root root 0 12. Sep 23:30 default/
dr-xr-xr-x 0 root root 0 12. …Run Code Online (Sandbox Code Playgroud) 我有一台电脑:
Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
它在所有接口上的端口 80 上运行 Apache,并且它没有出现在 中netstat -planA inet,但意外地可以在 中找到netstat -planA inet6:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5672 :::* LISTEN 2402/beam.smp
tcp6 0 0 :::111 :::* LISTEN 1825/rpcbind
tcp6 0 0 :::9200 :::* LISTEN 2235/java
tcp6 0 0 :::80 :::* LISTEN 2533/apache2
tcp6 0 0 :::34611 :::* LISTEN 1856/rpc.statd
tcp6 0 0 :::9300 :::* …Run Code Online (Sandbox Code Playgroud) 使用 CentOS 7 运行服务器机器,我注意到 avahi 服务默认运行。
我有点想知道它的目的是什么。
它似乎做的一件事(在我的环境中)是随机禁用 IPv6 连接,在日志中看起来像这样:
Oct 20 12:23:29 example.org
avahi-daemon[779]: Withdrawing address record for fd00::1:2:3:4 on eno1
Oct 20 12:23:30 example.org
Withdrawing address record for 2001:1:2:3:4:5:6:7
Oct 20 12:23:30 example.org
Registering new address record for fe80::1:2:3:4 on eno1.*.
Run Code Online (Sandbox Code Playgroud)
(后缀1:2:3...是编的)
事实上,在此之后,公共2001:1:2:3:4:5:6:7IPv6 地址将不再可访问。
因此,我通过以下方式禁用了 avahi 服务:
# systemctl disable avahi-daemon.socket avahi-daemon.service
# systemctl mask avahi-daemon.socket avahi-daemon.service
# systemctl stop avahi-daemon.socket avahi-daemon.service
Run Code Online (Sandbox Code Playgroud)
到目前为止,我还没有注意到任何限制。
因此,我的问题是关于服务器系统上 avahi 的用例。
我有以下设置
Linux 1 Linux 0
eth1 eth0-------------------eth0
14.14.14.80 19.19.19.20 19.19.19.10
2005::5/64 2004::3/64 2001::3/64
Run Code Online (Sandbox Code Playgroud)
从Linux0,我能够ping通14.14.14.80 or 19.19.19.20(19.19.19.20加入作为默认GW),也对Linux1,ipv4启用转发。对于ipv6,我无法添加2004::3/64为默认 ipv6 网关Linux0。我试过
ip -6 route add default via 2004::3
Run Code Online (Sandbox Code Playgroud)
和
ip -6 route add default via 2004::
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
RTNETLINK answers: No route to host
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
当我尝试时:
$ ip -6 addr
我得到类似的东西:
inet6 fe80::d773:9cf0:b0fd:572d/64 scope link
如果我尝试从机器本身 ping 通:
$ ping6 fe80::d773:9cf0:b0fd:572d/64
unknown host
$ ping6 fe80::d773:9cf0:b0fd:572d
connect: Invalid argument
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
运行尝试发送电子邮件的脚本时出现错误。
send-mail: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
send-mail: warning: inet_protocols: configuring for IPv4 support only
postdrop: warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
postdrop: warning: inet_protocols: configuring for IPv4 support only
Run Code Online (Sandbox Code Playgroud)
任何人都可以说是什么问题,我需要一些许可吗?
在家里,我在 Fedora 28 机器上安装了 Pi-Hole,现在它可以通过 DHCP 正常工作,充当 DNS 服务器,并根据需要阻止 IPv4 地址。但是,它似乎无法阻止 IPv6 地址。在日志中我看到(例如):
2018-06-12 00:11:15 IPv4 v10.events.data.microsoft.com 192.168.1.79 Pi-holed - Whitelist
2018-06-12 00:11:15 IPv6 v10.events.data.microsoft.com 192.168.1.79 OK (forwarded) - Blacklist
Run Code Online (Sandbox Code Playgroud)
...还有很多其他这样的组合:IPv4 Pi-holed,IPv6 在相同的时间戳转发到相同的 FQDN。
目前我对 IPv6 知之甚少。这些是我认为导致我的问题的一些知识差距:
IPv6 …
我网络上的路由器分发一个由我的 ISP 分配的 IPv6 前缀。这个前缀是动态的,但“相当粘”。
我希望我的机器自动获取 RA 中通告的前缀,但将它与用户指定的本地部分结合起来,而不是随机或基于 MAC 地址生成一个。有没有简单的方法可以做到这一点?