我尝试通过修改 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