eth0
の/etc/network/interfaces
にサブネットを定義しました:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
このサブネットは、イーサネットポートに接続されたRaspberry Piとの通信に使用されます。すでにWi-Fiによって提供されているため、インターネット接続は必要ありません。
Sudo ifup eth0
を実行すると、ラップトップが静的IPアドレス192.168.1.1を取得することを期待していました。ただし、route -n
は以下を示します。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
... (bunch of things) ...
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
引用されたリンクから:
DHCPクライアントがアドレスを取得しようとしたが、タイムアウトと再試行期間の後にDHCPサーバーを見つけられなかった場合、このネットワークからアドレスをランダムに想定します。これにより、DHCPアドレスの取得に失敗したホストとの通信が可能になります。
ただし、interfacesファイルは、おそらく不可能な静的IPアドレスを要求するため、有効なアドレスは指定されませんでした。
192.168.1.1は、接続しようとしているルーターまたは他のアクセスポイントのアドレスです。したがって、アドレスは許可されません。さらに、インターネットに接続する予定の場合は、DNSネームサーバーを指定する必要があります。提案してもいいですか:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 192.168.1.1
もちろん、続行する前に正確な詳細を確認してください。
インターフェイスを再起動します。
Sudo ifdown eth0 && Sudo ifup -v eth0
小切手:
ping -c3 www.ubuntu.com
RFC 3927 (強調鉱山)ごと:
広域IPネットワークに参加するには、ホストが
インターフェースのIPアドレスを手動で設定するか、
ユーザーまたはネットワーク上のソースから自動的に
動的ホスト構成プロトコル(DHCP)サーバー。残念ながら、
このようなアドレス構成情報は常に利用できるとは限りません。
したがって、ホストが依存することができるのは有益です
アドレスがない場合でもIPネットワーク機能の有用なサブセット
構成が利用可能です。 このドキュメントでは、ホストが
169.254/16プレフィックス内のIPv4アドレスを使用して、同じ物理(または論理)リンクに接続されている他のデバイスとの通信に有効なインターフェイスを自動的に構成します。
要約すると、169.254/16サブネットは、DHCPまたは静的IPアドレスの手動割り当てに依存することなく、物理的に(または論理的に、たとえばスイッチを介して)接続された2つのデバイス間の通信を可能にするために予約されました。
プライベートネットワークに関するウィキペディアの記事 を引用するには、
IEEE 802(イーサネット)ネットワーク上のホストがDHCP経由でネットワークアドレスを取得できない場合、169.254.1.0から169.254.254.255のアドレスが擬似ランダムに割り当てられることがあります。
その使用例として、直接イーサネット接続を介して互いに通信する必要がある2つの組み込みデバイスがありますが、一方または両方のデバイスが最初にDHCPを探して、ローカルに接続される可能性があるとしますエリアネットワーク。デバイスが直接接続されており、利用可能なDHCPがない場合、デバイスは multicast DNS などのプロトコルを使用して相互に自動的に検出することができますが、各デバイスにはまず任意のIPアドレスが割り当てられている必要があります実際にイーサネットリンクを介して互いに通信できます。したがって、オペレーティングシステムは、169.254/16ネットワークからイーサネットデバイスにIPアドレスを自動的に割り当てます。
さて、そのルートがデフォルトでルーティングテーブルにある理由について... /etc/networks
を見ると、「リンクローカル」ネットワークがこのサブネットにあると定義されていることがわかります。
$ cat /etc/networks
# symbolic names for networks, see networks(5) for more information
link-local 169.254.0.0
このファイルのアドバイスを参照してman networks
をチェックアウトすると、以下が表示されます。
このファイルはroute(8)およびnetstat(8)ユーティリティによって読み込まれます。
したがって、route
がそのファイルを読み取った後、ブート時にルートが自動的に作成されます。
ルートは、実際にリンクローカル通信を使用する予定で、接続されたデバイスに静的IPアドレスを割り当てたくない場合にのみ必要です。しかし、そうしなくてもそのままにしておいても害はありません。
ただし、本当に削除したい場合は、次のようにして削除できます
Sudo route del -net 169.254.0.0 gw 0.0.0.0
または、永続的に削除するには、/etc/networks
のエントリをコメントアウトして再起動するだけです。
他の人が述べたように、ifup
が169.254.0.0
ネットワークを設定しているため、link-local
がルーティングテーブルに存在します。
これを回避するには、ifconfig
の代わりにifup
を使用することを検討してください。
必要に応じて、最初にifdown
を実行します。
Sudo ifdown eth0
Sudo ifconfig eth0 192.168.1.1
ifconfig
は作業量が少なく、/etc/network/interfaces
を読み取りません。
インターネットアクセスをPiと共有できるようにする必要があります。ラップトップのカーネルでパケット転送をオンにする必要があります。これは再起動せずにできると思います。私は過去にそれをやったことがありますが、私の聞いた上でそれをする方法を知りません。これは役立つかもしれません: