
Raspbianを実行しているRaspberry Piからデフォルトパスを削除したいです。
これが私が得たものですroute -n
。
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.178.1 0.0.0.0 UG 203 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 204 0 0 docker0
169.254.0.0 0.0.0.0 255.255.0.0 U 206 0 0 veth07ba603
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.178.0 0.0.0.0 255.255.255.0 U 203 0 0 eth1
ゲートウェイを削除するために、次のコマンドを試しました。
ip route del default via 192.168.178.1 dev eth1
route del default gw 192.168.178.1
route del default gw 192.168.178.1 dev eth1
route del -net 0.0.0.0 gw 192.168.178.1 netmask 0.0.0.0 dev eth1
ip route del 0.0.0.0/0
それらのどれも動作しません。
再度実行すると、route -n
パスはそのまま残り、インターネットにアクセスできます。
システムログもよさそうです。
Dec 3 02:42:21 pi dhcpcd[474]: eth1: deleted default route via 192.168.178.1
修正する:
この問題はDockerコンテナを実行したときにのみ発生することがわかりました。たとえば、次のようになります。
docker run --name 'foo' -itd alpine /bin/sh
コンテナがシャットダウンしたら、ゲートウェイを削除できます。ただし、何らかの理由で起動コンテナを使用すると、dockerはデフォルトゲートウェイを再生成しますdocker start foo
。コンテナが実行中の場合、ゲートウェイをまったく削除できません(上記を参照)。
ここで何が起こっているのか知っている人はいますか?デフォルトゲートウェイなしでコンテナを実行する方法は? Piはインターネットに接続してはいけません。
答え1
解決策は、次の行を追加してPiに静的IPを割り当てることです/etc/dhcpcd.conf
。
interface eth1
static ip_address=192.168.178.10
これで、Dockerコンテナが実行されているかどうかにかかわらず、期待どおりにadd
デフォルトゲートウェイを使用できるようになりました。del