在ubuntu中寫了一點iptables規則,但是,竟然iptables竟然無效,經過多方查找問題。。。眼淚。。。
終於發現是rc.local竟然沒有運行,我暈。仔細檢查iptables腳本n遍,沒有發現問題。但是,重啟后仍然沒有運行。
iptables表為空。於是,單獨拿出一條規則,在終端運行,在用iptables -L進行檢查,結果正常顯示。
經過網絡搜索后,有人提示說:可能默認的sh不是bash導致,腳本不兼容,從而沒有執行。
注意:有的ubuntu16.04系統默認都沒有rc.local腳本,所以首先要排除沒有執行權限的問題。
ls -al /etc/rc.local 如果沒有執行權限,顯然無法啟動。這是只要 chmod +x /etc/rc.local就ok了。
然后,在檢查是否是dash腳本不兼容的問題,現在這類情況已經不多見了。修改為bash的方法:
方法1:在終端執行 sudo dpkg-reconfigure dash,然后選擇 no.
方法2:重新進行軟鏈接:
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
最后是systemd導致的rc.local無法啟動。這類情況網上找答案吧。我沒遇到過,也不太了解systemd。
