web-dev-qa-db-ja.com

DHCPサーバーからの自動デフォルトルートを無効にする

こんにちは、Raspberry Piをdhcpサーバーとして機能するように構成しようとしています。アイデアは、eth0インターフェースを介してスイッチを接続し、そこに他のデバイスを接続できるというものです。しかし、私はまだwlan0を通じてsshとインターネットアクセスを維持したいと思います。

Isc-dhcp-serverをインストールし、静的IPアドレスの構成を/ etc/network/interfaces.d/ethに追加して構成しました。

allow-hotplug eth0
iface eth0 inet static
  address 10.0.0.1
  netmask 255.255.255.0
  broadcast 10.0.0.255
  gateway 10.0.0.1

次に、dhcpサーバーの構成をファイル/ etc/dhcp/dhcpd.confに追加しました。

authorative
subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.1 10.0.0.10;
  option subnet-mask 255.255.255.0;
  option broadcast-address 10.0.0.255;
  option routers 10.0.0.1;
  option domain-name "local-network";
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

その後、Raspberry Piを再起動しましたが、WiFiを介して自分のマシンからそれに接続でき、スイッチに接続されている他のマシンが10.0.0.2から10.0.0.10にIPアドレスを取得しています(そして私は構成されたRaspberry Piを介してsshすることができます)。

最大の問題は、そのRaspberry Piからインターネットにアクセスできないことです。私が何かをタイプすると

ping 10.0.0.3

うまくいきますが

ping 8.8.8.8

失敗します。問題をデバッグした後、コマンドip routeで問題を発見することができました:

default via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.2 metric 202 
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.46 metric 303 
10.0.0.0/24 dev eth0 proto dhcp scope link src 10.0.0.2 metric 202 
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.46 metric 303

10.0.0.1を介してデフォルトルートを削除しようとしましたが、一時的には役立ちましたが、しばらくすると、いくつかのプロセス(dhcpサーバーの疑いがあります)で回復します。もちろん、それを常に削除するデーモンを書くこともできますが、もっと良い解決策を探しています。

アップデート#1

DHCPサーバーがない場合、ip routeは以下を示します。

default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.46 metric 303 
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1 
169.254.0.0/16 dev eth0 scope link src 169.254.44.117 metric 202 
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.46 metric 303

前もって感謝します

3
kobra

問題は確かにルートテーブルですが、ルートレコードを返さずに削除できました。

上記のように、Stretchのネットワーキング(ジェシーに戻ると思います)はかなり変わりました。これ post は、/etc/dhcpcd.confの代わりに/etc/network/interfaces*を変更して静的IPを設定する手順に私を導きました。ただし、自分の状況では、static router=x.x.x.xアダプタ静的IPのeth0変数をコメント化するのが最善であることがわかりました。これをデフォルトゲートウェイとして機能させたくなかったためです。次に、ip route del default via <address> dev eth0を使用してテーブルからルートを削除しただけで、ルートは削除されたままでした。

ただし、ここでは完了しません。dhcpサーバーに接続されている他のデバイスでインターネットアクセスが正しく機能するためには、NATを設定するために次のことを行う必要があります。

1)/etc/sysctl.confを編集して、次のトグルnet.ipv4.ip_forward=1でIP転送を有効にします。
2)/etc/rc.localを編集して、eth0からwlan0に転送するためのiptableルールを追加します。以下を追加します。

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -m state \
--state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

3)変更を有効にするために再起動します

これで、他のデバイスがdhcpサーバーから割り当てられたwifiアクセスとIPで意図したとおりに機能するはずです。

1
Shawn