我尝试在 Ubuntu 14.04 上完全禁用 IPv6,具体方法如下:这个帖子但netstat
显示正在使用。为什么?
~ > sudo sysctl -p|grep ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
~ > cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1
~ > sudo netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 786/rpcbind
tcp 0 0 0.0.0.0:51413 0.0.0.0:* LISTEN 1682/transmission-g
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1679/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1129/sshd
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 4601/dropbox
tcp 0 0 127.0.0.1:17600 0.0.0.0:* LISTEN 4601/dropbox
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1278/zabbix_agentd
tcp 0 0 127.0.0.1:17603 0.0.0.0:* LISTEN 4601/dropbox
tcp 0 0 0.0.0.0:44326 0.0.0.0:* LISTEN 4541/skype
tcp 0 0 0.0.0.0:57767 0.0.0.0:* LISTEN 802/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 786/rpcbind
tcp6 0 0 :::51413 :::* LISTEN 1682/transmission-g
tcp6 0 0 :::22 :::* LISTEN 1129/sshd
tcp6 0 0 :::17500 :::* LISTEN 4601/dropbox
tcp6 0 0 :::52253 :::* LISTEN 802/rpc.statd
tcp6 0 0 :::10050 :::* LISTEN 1278/zabbix_agentd
答案1
好吧 - 我绝对不是网络专家,我不在乎您是否同意,甚至不知道我完全、彻底、绝对不喜欢 ipv6 的原因。相信我对此事的看法不会改变。
这是我在运行 ubuntu 16.04 的网络系统上抑制 IPv6 扩散的方法:
我不会描述我最初的尝试 - 例如在我的网络接口上忽略它,不接受或使用 iptables 转发它的微弱尝试(虽然我确实学到了关于 ipv6 和 iptables 的一个非常好的技巧)。如果你还没有做过这些事情,那么你不应该做我在这里的任何建议,恕我直言。
我发现有用的 URL(还有其他的,这些对我有用):
- http://www.neuraldump.com/2016/11/how-to-disable-ipv6-in-ubuntu-16-04-xenial-xerus/#comment-22453
- http://mindref.blogspot.com/2010/12/debian-disable-ipv6_22.html
- http://crashmag.net/disable-ipv6-lookups-with-bind-on-rhel-or-centos
初始阶段:以用户 root 身份使用 sysctl 指令禁用它,创建/编辑(将 / 替换为“或”)/etc/sysctl.d/99-idontlikeipv6.conf,添加以下几行:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
保存文件然后重新启动 procps:
sudo service procps reload
沿着螺旋进一步向下……(为什么 iptables 还不够用)
IPv6 和 Linux 套接字监听(或者如何判断是否存在问题)大多数关心安全性的人至少会运行某种防火墙。我运行了,并且认为 iptables 是迄今为止最好的进程保护工具,而且没有太多开销。
然后我了解到,绑定到 IPv4 和 IPv6 的本地进程不受任何 iptable 指令的“保护”,或被阻止接收 IPv6 流量,因为 iptables 仅影响/阻止 IPv4 流量。要防火墙 IPv6 流量,您需要设置另一个规则文件并通过以下方式加载它ip6tables。这是我使用的文件和加载命令:
(以 root 身份)创建/编辑 /etc/ip6tables.up.rules 并添加以下内容:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT加载
sudo ip6tables-restore < /etc/ip6tables.up.rules检查它的样子:
netstat -atunp
这将显示您本地机器上监听的任何进程 - 您需要查找 tcp6 和 udp6 行。您可以使用以下命令将 netstat 输出过滤到这些行:
netstat -atunp | egrep "tcp6|udp6"
当我这样做时,我看到了如下内容:
tcp6 0 0 :::10000 :::* LISTEN 2353/perl
tcp6 0 0 :::113 :::* LISTEN 1399/oidentd
tcp6 0 0 :::631 :::* LISTEN 6620/cupsd
tcp6 0 0 :::17500 :::* LISTEN 6834/dropbox
udp6 0 0 :::5353 :::* 7160/chrome
udp6 0 0 :::5353 :::* 1120/avahi-daemon:
udp6 0 0 :::57956 :::* 1120/avahi-daemon:
以及其他一些。以下是我如何摆脱(一些)它们:
查看 netstat 以了解您的情况。我仍然有很多东西在监听 IPv6 流量。像 tomcat、apache2、rpcbind、cupsd、chrome 这样的进程...列表很长。禁用这些进程需要一些调查和工作。我会尽量简短。
- apache2:修改 apache 文件 ports.conf(我的在 /etc/apache2 中),在每个 Listen 指令后、每个端口前添加一个 IP 地址,以“:”分隔符分隔。例如:
Listen 127.0.0.1:80
Listen 127.0.0.1 443
- tomcat/catalina:修改 /conf 下的 server.xml 文件,在每个连接器子句中添加一个地址指令,例如:
< Connector
port="6969"
地址=“8.8.8.8”
重定向端口="8443" - postfix:修改 /etc/postfix/main.cf 文件中 net_protocols 行,内容为:
net_protocols = ipv4 - bind9/named:找到你的 dns 配置文件(可能有几个,你自己决定)并添加监听-on-v6 { 无; };接近/之前/之后'聆听' 指令。我的是在 /etc/bind/named.conf 中,有些页面说要查找/将其添加到名为 named.conf.options 的文件中
- cups(cupsd、cups-browserd):编辑 /etc/cups/cupsd.conf 并更改端口指令,如下所示(注意:买家要小心,您可能会喜欢 cups 给您带来的东西,如果是这样,您不会想把它搞砸的):
端口 127.0.0.1:631 - sshd:取决于安装的 ssh 服务器。我遇到了两种不同的方法来将其设置为仅列出 ipv4 地址。
- 编辑 /etc/ssh/sshd_config 并且只有1ListenAddress 指令并赋予其特定的 IPv4 地址“任何端口”0.0.0.0 值,例如:
# ListenAddress ::
ListenAddress 4.4.4.4 - 将 AddressFamily 指令设置为 inet (确保只启用一个 AddressFamily 指令)
# AddressFamily any
地址家庭网络
- 编辑 /etc/ssh/sshd_config 并且只有1ListenAddress 指令并赋予其特定的 IPv4 地址“任何端口”0.0.0.0 值,例如:
- ntp:编辑 /etc/default/ntp 使 NTPD_OPTS 以-4,类似于:
NTPD_OPTS='-4 -g' - rpcbind(rpc.statd、rpc.mountd):注释掉以 tcp6 或 udp6 开头的行
- avahi-daemon:我找不到任何允许它的理由,而且它很容易就被清除了……apt-get purge avahi 守护进程
- chrome-这个是通过UI控制的-以下URL是削弱其IPv6流量的关键: https://unix.stackexchange.com/questions/187294/chromium-browser-pepperflashplugin-opening-listening-ports-on-0-0-0-05353
使用 chrome 导航到 URLchrome://flags/#device-discovery-notifications并使用选择列表选择“禁用”(或已禁用,记不清了)。禁用这个所谓的“设备发现”功能会关闭 mDNS 端口 5353/tcp 的监听。您需要重新启动 Chromium/Google Chrome 才能使此功能生效。
要使这些更改生效,请重新启动您的计算机。还有其他方法,但我实在是太累了,不想再详细阐述,重新启动要么会让您的计算机出现 IPv6 问题,要么会让您担心一系列新问题。
注意:知识就是力量,用双手就可以成为强大的武器。如果你按照我帖子中的任何内容操作,你将承担弄乱你的系统的所有责任。尽情享受吧
-厕所