eth0
私は2つのNIC、つまり1つはイーサネット()、もう1つはワイヤレス(wlan0
)を持つDebian(Raspbian)派生製品を実行しているコンピュータを持っています。eth0
固定アドレスを使用してマシンをプライベートLANに接続し、wlan0
マシンをインターネットに接続し、wpa_supplicantを設定します。追加の設定なしでLAN上でルータをpingできますが、google.comをpingすることはできません。いくつかの調査の終わりにこれを達成する最もきれいな方法は、カスタムルートテーブルを設定することでした。ルーティングルールは、LANネットワークから着信および発信するすべてのトラフィックをルーティングしeth0
、他のすべてのトラフィックはLANネットワークを通過しますwlan0
。このロジックが間違っている場合は訂正してください。
これを行うためにルーティングテーブルを設定する方法を見つけました。コマンドを使用して、ルールを手動で設定したときに機能させることができますip route
。問題は、post-up
インターフェイスファイルのコマンドを使用してインターフェイスを呼び出すときにルーティングテーブルを設定できないようです。
最初から私の考え方を説明すると...
route -n
追加設定なしで出力された結果です。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 10.109.48.1 0.0.0.0 UG 303 0 0 wlan0
10.109.48.0 0.0.0.0 255.255.240.0 U 303 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
私が知る限り、両側間のコミュニケーションに葛藤があると知っています。「どんな目的地」eth0
、これはより低いメトリックを持つため、を使用して解決されます。これにより、すべてのアウトバウンドトラフィックが通過できるようになりますeth0
。理想的には、LANに入って来るトラフィックだけを通過する必要がありますeth0
。そこで、基本的な生成ルールを削除し、ネットワークの宛先とゲートウェイを指定するルールを作成すると、必要な動作が得られると思いました。説明に従って、デフォルトのルーティングルールを削除し、新しいルールを追加するためにいくつかのコマンドを実行した後、次のルーティングテーブルを取得しました。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.109.48.1 0.0.0.0 UG 303 0 0 wlan0
10.109.48.0 0.0.0.0 255.255.240.0 U 303 0 0 wlan0
192.168.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0
その後、LANのゲートウェイとgoogle.comにpingを送信できます。だから私の直感があったようだ。これがただ偶然であれば訂正してください。
ルーティングルールを永久にするために私が見つけた多くのガイドとServerfaultの答えは、インターフェースpost-up
ファイルでコマンドを使用することがこれを行う最善の方法であることを示しています。そのため、以下のようにインターフェースファイルを編集しました。
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
gateway 192.168.0.1
up ip route delete via 192.168.0.1 dev eth0
up ip route delete 192.168.0.0/24 via 0.0.0.0 dev eth0
up ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
再起動後も、ルーティングテーブルはデフォルト値と同じままです。 boot.log にはifup eth0
発生したエラーは表示されません。これらの問題の原因が何であるかわかりません。
答え1
だから私の問題は、概念的な問題ではなく、私が知識を得るためのガイドは非常に古いです。この質問は次のカテゴリに属します。システムが再び攻撃します!。
現在、Raspbianディストリビューションはsystemdを使用するDebian Jessieに従います。 systemdはすべてに従うわけではありませんが、/etc/network/interfaces
生成されたルールを使用します/etc/dhcpcd.conf
。 Systemdは、アドレス指定が静的であるか動的であるかにかかわらず、すべてのインターフェイス設定に基づいています/etc/dhcpcd.conf
。
目的の動作を得るには、まず次のものを除くすべてのeth0
設定/etc/network/interfaces
を削除しました。
allow-hotplug eth0
iface eth0 inet static
interface eth0
それからその部分を編集しました/etc/dhcpcd.conf
...
interface eth0
static ip_address=192.168.0.10
私が設定していないことに注意してくださいstatic router=192.168.0.1
。これはdefault via 192.168.0.1 dev eth0
私が望ましくないパスを生成します(wlan0のデフォルトパスと競合するため)。
これで、最小限の構成で両方のインターフェイスを使用してネットワークを介して通信できるようになりました。