こんにちは、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
前もって感謝します
問題は確かにルートテーブルですが、ルートレコードを返さずに削除できました。
上記のように、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で意図したとおりに機能するはずです。