タイトルの通りですが、↓みたいなのを書いて(NetworkManagerは邪魔をするのでapt purgeして)再起動するという非効率な作業をしておりました。
auto eth0 iface eth0 inet static address 192.168.xx.yy netmask 255.255.255.0 gateway 192.168.xx.1 post-up route add default gateway 192.168.xx.1 metric 110 post-up route deldefault gateway 192.168.xx.1 metric 100 post-up route del default gateway 192.168.xx.1 metric 101 post-up route del default gateway 192.168.xx.1 metric 0
で、↑だと
$ route -n カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース 0.0.0.0 192.168.xx.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.xx.1 0.0.0.0 UG 110 0 0 eth0 192.168.xx.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
消えてほしい metric 0 が消えてくれない、と。何が問題なのか判らないので困ったのですが、よく考えたら↑はifupしたときに実行されるらしいので起動してる状態で
$ sudo ifconfig eth0 down <- 一端落とす $ sudo ifup eth0 -v <- verboseオプションつけてifupする
とかしてあげるとエラーが出るということに今更気づきました。ここで「not configured」とか出る場合は「/run/network/ifstate」に
$ sudo vi /run/network/ifstate lo=lo eth0=eth0 <-追加
しておくと、怒られなくなる模様です。*1で、「-v」の効果で
$ sudo ifup eth0 -v ifup: configuring interface eth0=eth0 (inet) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/bridge run-parts: executing /etc/network/if-pre-up.d/wireless-tools run-parts: executing /etc/network/if-pre-up.d/wpasupplicant /sbin/ip addr add 192.168.xx.yy/255.255.255.0 broadcast 192.168.xx.255 dev eth0 label eth0 /sbin/ip link set dev eth0 up /sbin/ip route add default via 192.168.xx.1 dev eth0 onlink route add default gateway 192.168.xx.1 metric 110 route del default gateway 192.168.xx.1 metric 100 SIOCDELRT: No such process ifup: failed to bring up eth0
要するに存在しないmetric 100を削除しようとして「そんなもん無いよ」と怒られてる訳でした、と。
一端エラーになるとゴミが残るっぽく、ifdown→ifupがエラーになるのでflushする必要がある模様。
$ sudo ifdown eth0 ifdown: interface eth0 not configured $ sudo ifup eth0 -v ifup: configuring interface eth0=eth0 (inet) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/bridge run-parts: executing /etc/network/if-pre-up.d/wireless-tools run-parts: executing /etc/network/if-pre-up.d/wpasupplicant /sbin/ip addr add 192.168.xx.yy/255.255.255.0 broadcast 192.168.xx.255 dev eth0 label eth0 RTNETLINK answers: File exists <- すでにあるとかなんとか ifup: failed to bring up eth0 $ sudo ip addr flush dev eth0 $ sudo ifdown eth0 ifdown: interface eth0 not configured adachi@val:/etc/network$ sudo ifup eth0 -v ifup: configuring interface eth0=eth0 (inet) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/bridge run-parts: executing /etc/network/if-pre-up.d/wireless-tools run-parts: executing /etc/network/if-pre-up.d/wpasupplicant /sbin/ip addr add 192.168.xx.yy/255.255.255.0 broadcast 192.168.xx.255 dev eth0 label eth0 /sbin/ip link set dev eth0 up <- ちゃんと上げに行った /sbin/ip route add default via 192.168.xx.1 dev eth0onlink route add default gateway 192.168.xx.1 metric 110 route del default gateway 192.168.xx.1 metric 100 SIOCDELRT: No such process ifup: failed to bring up eth0
とりあえず、エラーから metric 100 を消しに行ってエラーになってるので
auto eth0 iface eth0 inet static address 192.168.xx.yy netmask 255.255.255.0 gateway 192.168.xx.1 post-up route add default gateway 192.168.xx.1 metric 110 post-up route del default gateway 192.168.xx.1 metric 0
みたいな感じにすると
$ sudo ifup eth0 -v ifup: configuring interface eth0=eth0 (inet) /bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/bridge run-parts: executing /etc/network/if-pre-up.d/wireless-tools run-parts: executing /etc/network/if-pre-up.d/wpasupplicant /sbin/ip addr add 192.168.xx.yy/255.255.255.0 broadcast 192.168.xx.255 dev eth0 label eth0 /sbin/ip link set dev eth0 up /sbin/ip route add default via 192.168.xx.1 dev eth0 onlink route add default gateway 192.168.xx.1 metric 110 route del default gateway 192.168.xx.1 metric 0 /bin/run-parts --exit-on-error --verbose /etc/network/if-up.d run-parts: executing /etc/network/if-up.d/000resolvconf run-parts: executing /etc/network/if-up.d/avahi-autoipd run-parts: executing /etc/network/if-up.d/avahi-daemon run-parts: executing /etc/network/if-up.d/openvpn run-parts: executing /etc/network/if-up.d/postfix run-parts: executing /etc/network/if-up.d/static-routes run-parts: executing /etc/network/if-up.d/ubuntu-fan run-parts: executing /etc/network/if-up.d/wpasupplicant $ route -n カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース 0.0.0.0 192.168.xx.1 0.0.0.0 UG 110 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 192.168.xx.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
期待通りのルーティングにはなったけどnetアドレスでゴミが載るようになった?
post-up route del -net 169.254.0.0 netmask 255.255.0.0 metric 1000
で消せそうな気がするけどifupでエラーが出るので残しておくか。。。
*1:エラーが出ない設定を書いてあれば不要な気がします、たぶん。。。