Linuxパスパス

Linuxパスパス

私は2つのイーサネットインターフェース(eth0とeth1と呼びます)と1つのWiFiインターフェース(wlan0と呼びます)を備えた非常に基本的なLinuxシステムを持っています。

私はいろいろな理由でいいえこのデバイスがWiFiインターフェースを介して直接ダイヤルできることを願っています。代わりに、eth0をすべての関門として扱いたいと思います。

しかし、私はこのマシンのLAN(つまりeth0を介してアクセス可能)のルータがこのマシンのWiFiインターフェイスを他の世界とのブリッジとして使用できるようにしたいと思います。私と同僚は、ルータがパケットをeth1のこのコンピュータに送り返すことができ、このコンピュータがパケットをwlan0に転送できることを考えました。同様に、wlan0 に入ってくるすべてのパケットは、処理のためにすぐに eth1 を介してローカルルータに送り返されます。

私たちは、専用のルーターがより良いルーティング決定を下すことができ、関連するLinuxシステムが適切なルーターになるように教えるよりも簡単だと信じているので、このトポロジーを採用しました。 (WiFiリンクは(a)常にオンラインではなく、(b)残りの世界に接続する唯一のリンクではないため、これは些細なことではありません。) (d)他のホストからのパケットもそれを介して送信できます。

これらの2つのインターフェイス間でパケットをルーティングする方法はいくつかあります。ブリッジインターフェイスを使用するか、iptablesを使用できます。現在私はiptablesをしています。 (機械が少し古いのでnftを使いません。)

私がわからないのは次のとおりです。

  1. eth1とwlan0には独自のIPアドレスが必要ですか?
  2. もしそうなら、このマシンがそれらを直接使用するのを防ぐのはどれほど難しいでしょうか?

少なくとも私は次のことができると思います。

iptables -A FORWARD -i eth1 -o wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth1 -j ACCEPT

良い2 つのインターフェイス間の iptables 転送。理論的には、Linux ボックスを 2 つのインターフェイス間のワイヤーに置き換えて、何らかの方法でチェックしたり変更したりすることなく、すべてのパケットを盲目的に双方向に転送します。

しかし、これが素朴で、ARPが正常に動作しないか動作しないのか心配です。

実際、eth1とwlan0にIPアドレスを割り当てる必要があるかもしれません。これにより、パケットを転送するとき(少なくとも)パケットの送信元アドレスを書き換える必要があります。回答によると私がリンクした質問は、追加するのと同じくらい簡単かもしれません。

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

たぶんあるかもしれません

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

私のiptablesレシピ。

また、これら2つのインターフェイスにIPアドレスを割り当てる場合は、ローカルLinuxシステムがそのアドレスを他の目的に使用しないようにしたいと思います。 eth1および/またはwlan0に割り当てられているサブネットと一致しているように見えても、eth0を介してすべてを送信するようにルーティングテーブルに明示的なパスなしルールを作成する必要があります。

これを行う方法について提案がある人はいますか? (またはそれが悪い考えであり、決して機能しないことを示唆していますが、そうなることを願っています。)

ちなみに、これはグローバルインターネットにまったく接続されていない孤立したローカルネットワークです。すべてのアイテムには、利用可能な固定個人アドレスがあります。 DHCPは実行されず、NATは必要ありません。

ベストアンサー1

私が正しく理解したら、基本的にNUCがeth1とwlan0の間のスイッチとして機能したいですか?その場合は、iproute2( ip link add type bridge ...) または bridge-utils() を使用してブリッジを作成し、両方のbrctl addbr ...インターフェイスを追加できます。これらのインターフェイスにIPアドレスを割り当てる必要はありません。この場合、eth0はIPアドレスを持つ唯一のインターフェイスになり、唯一のアクティブなネットワークインターフェイスのように動作します。

おすすめ記事