ipv6 内核模块已卸载,但我的接口有 ipv6 地址

ipv6 内核模块已卸载,但我的接口有 ipv6 地址

我尝试通过修改 sysctl.conf 文件在 Fedora 37 上的笔记本电脑上禁用 ipv6:我首先尝试

echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf 
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf 
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

这不起作用,所以我在本地使用了 ansible 和我在互联网上找到的 bp028(anssi 强化 Linux 指南)角色并使用了 ipv6 行:第一个任务是列出中的所有 .conf 文件

    - /etc/sysctl.d/
    - /run/sysctl.d/
    - /usr/local/lib/sysctl.d/
    - /usr/lib/sysctl.d

然后它注释掉 net.ipv6.conf.default.disable_ipv6 和 net.ipv6.conf.all.disable_ipv6 然后运行这些任务:

- name: net.ipv6.conf.default.disable_ipv6 - disable ipv6
  sysctl:
    name: net.ipv6.conf.default.disable_ipv6
    value: '1'
    sysctl_set: yes
    state: present
    reload: yes

- name: net.ipv6.conf.all.disable_ipv6 - disable ipv6
  sysctl:
    name: net.ipv6.conf.all.disable_ipv6
    value: '1'
    sysctl_set: yes
    state: present
    reload: yes

现在,当我使用 ansible 运行任务时,ipv6 被正确禁用。

但是,当我重新启动时,当我键入时,我的 ipv6 在以太网接口上仍然处于活动状态,ip a并且我可以在 ipv6 协议上的 tcpdump 中看到流量。当我输入时,lsmod | grep ipv6我只有 nf_defrag_ipv6 当我输入时,lsmod | grep ip6我只有 ip6_tables 但 chatgpt 告诉我这些模块不加载 ipv6 支持。为什么我的 ipv6 仍然处于活动状态,如何禁用它?谢谢

答案1

答案是网络管理器正在自动设置这些 sysctl 配置。要禁用它,您可以执行以下操作(按照此链接https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-networkmanager-to-disable-ipv6-for-a-specific-connection_configuring-and-managing-networking

nmcli connection modify connection_name ipv6.method "disabled"
nmcli connection up connection_name

或者你可以使用这个 ansible 任务:

- name: retrieve nmcli connection name based on interface 
  shell: nmcli -t connection show | grep {{ var_interface }} | awk -F ':' '{print $1}'
  register: conn_name 

- name: disable ipv6
  community.general.nmcli:
    ifname: enp53s0
    method6: disabled
    conn_name: "{{ conn_name.stdout }}"
    state: present

相关内容