
我正在嘗試關閉所有介面的 IPv6 自動配置(我有 4 個)。我想用
net.ipv6.conf.all.autoconf = 0
在我的 sysctl 配置中(在 下/etc/sysct.d
)但設定未應用於任何接口,但對於它net.ipv6.conf.all.autoconf
有效的參數,因此請執行以下命令:`
sysctl -a | grep "net\.ipv6\.conf" | grep "autoconf"
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.eth0.autoconf = 1
net.ipv6.conf.eth1.autoconf = 1
net.ipv6.conf.eth2.autoconf = 1
net.ipv6.conf.eth3.autoconf = 1
然後我嘗試使用即時設定
sysctl -w net.ipv6.conf.all.autoconf=0
但兩者都不起作用。您知道有什麼解決方法嗎?我不想一一進行(net.ipv6.conf.eth3.autoconf = 0
手動)的原因,因為有時我也有更多介面(這些介面並不總是連接的)
答案1
長話短說
for sInterface in /proc/sys/net/ipv6/conf/*; do sysctl --write $(echo $sInterface.autoconf=0 | sed "s#/#.#g" | sed "s/.proc.sys.//g"); done
應該這樣做。
長版本:
sysctl
實際上更改了文件內容/proc/sys
net.ipv6.conf.all.autoconf
因此物理上位於/proc/sys/net/ipv6/conf/all/autoconf
- 所以我們迭代
/proc/sys/net/ipv6/conf/
- 我們將所有更改
/
為.
使用sed
分隔#
符 - 我們使用標準分隔符號
.proc.sys.
再次從字串中刪除。sed
/
- 我們添加
.autoconf=0
到介面 - 並申請
sysctl --write $()
筆記:如果你沒有像root
你應該做的sudo sysctl --write $()
那樣跑步...