Wi-Fi 信号をイーサネット ケーブル経由で「パイプ」する

Wi-Fi 信号をイーサネット ケーブル経由で「パイプ」する

現在、私が働いているビルのイーサネットポートはダウンしていますが、Wi-Fiは機能しています。私はWi-Fi対応のラップトップを持っています(ウブントゥ 14.04LTS (Trusty Tahr)) と非 Wi-Fi 対応ワークステーション (デビアン8(Jessie)) は、イーサネット プラグのみを備えています。

イーサネット ケーブルを介して 2 つを接続し、ワークステーションでネットワーク接続を確立することは可能ですか?

答え1

はい、できます。しかも、それほど難しくはありません。私はワイヤレス カードとイーサネット ポートを備えたラップトップを持っています。私は、Arch Linux を実行している RapberryPi を「クロスオーバー」イーサネット ケーブル経由で接続しました。これは、必要な特別なことの 1 つです。すべてのイーサネット カードがマシン間の直接接続を行えるわけではありません。

もう 1 つの難しい部分は IP アドレス指定です。これについては図解するのが一番です。これが私の小さなセットアップ スクリプトです。ここでも、enp9s0 はラップトップのイーサネット ポート、wlp12s0 はラップトップのワイヤレス デバイスです。

#!/bin/bash
/usr/bin/ip link set dev enp9s0 up
/usr/bin/ip addr add 172.16.1.1/24 dev enp9s0
sleep 10

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
iptables -A FORWARD -o enp9s0 -i wlp12s0 -s 172.16.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

dhcpd -cf /etc/dhcpd.enp9s0.conf enp9s0

スクリプトは、イーサネット カードの静的 IP アドレス 172.16.1.1 を設定し、カーネル モジュールをロードして NAT を設定します。IP ルーティング (ラップトップ上) をオンにし、iptablesワイヤレス カードからイーサネットにパケットをルーティングする、またはその逆の、準魔法のような処理を実行します。

Raspberry Pi が要求するため、IP アドレスを配布するためにイーサネット ポートで実行していますdhcpdが、静的ルーティング、DNS サーバー、および NTP サーバーとともに、ワークステーションで静的アドレスを実行することもできます。

/etc/dhcpd.enp9s0.conf念のため、そのルートを選択した場合、ファイルは次のようになります。

option domain-name "subnet";
option domain-name-servers 10.0.0.3;
option routers 172.16.1.1;
option ntp-servers 10.0.0.3;
default-lease-time 14440;
ddns-update-style none;
deny bootp;
shared-network intranet {
        subnet 172.16.1.0 netmask 255.255.255.0 {
                option subnet-mask 255.255.255.0;
                pool { range 172.16.1.50 172.16.1.200; }
        }
}

IP アドレスの選択は非常に重要です。私は、ラップトップから出ているイーサネット ケーブルに 172.16.1.0/24 を使用しました。ラップトップのワイヤレス カードは、最終的に 192.161.1.0/24 になります。ラップトップのワイヤレスの IP アドレスを確認し、イーサネット カード用に別のサブネットを選択する必要があります。さらに、「bogon」または「ルーティング不可能」ネットワークのいずれかを選択する必要があります。私の例では、172.16.1.0/24 は、192.168.1.0/24 と同様に、公式のルーティング不可能な IP アドレス範囲から取得され、dhcpd.enp9s0.confDNS サーバーと NTP サーバーに提供される 10.0.0.3 アドレスも同様です。自分の設定に何が適切かを判断するには、頭を使う必要があります。

答え2

それは可能ですか? もちろんです。必要なのは、IP 転送、ルーティング、またはラップトップのイーサネット ポートからラップトップの WiFi へ、またはその逆にパケットを移動するその他の (単純な) 方法を構成することだけです。これは良いアイデアですか? おそらくそうではありません。ネットワーク管理者が少し怒るかもしれません。

答え3

Wikipedia によると、イーサネット ポートの 1 つがギガビットの場合、通常のケーブルで動作します。クロスは不要です。両側にギガビットがあり、通常のケーブルで動作します。

この質問は 2016 年に出されたものなので、両方の Linux マシンでネットワーク マネージャーが実行されていると想定しています。その GUI を使用して IP を設定できます。そうでない場合は、おそらくカスタム設定を行っており、コマンド プロンプトから IP を設定する方法を知っているので、その詳細は省略します。

ケーブルで接続すると、ラップトップとワークステーションのイーサネットに関連するネットワーク インターフェイス名が GUI に表示されます。

ワークステーション (および/またはラップトップ) を定期的に他のネットワーク機器に接続する必要がない場合は、両方のイーサネット インターフェイスに静的 IP を設定できます。

静的 IP を Wi-Fi と同じサブネットに設定しないでください。たとえば、Wi-Fi が 192.168.1.0/16 の場合、192.168.2.1 と 192.168.2.2 に設定し、サブネット マスクは 255.255.255.0 にします。IP の最後の「数字」のみが異なるためです。ワークステーションの DNS は、ワークステーションで DNS (IP だけでなく名前でサイトを開く) を使用できるように、ラップトップの Wi-Fi と同じ DNS IP に設定する必要があります。

ラップトップで IP 転送を有効にする必要があります。

sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

おそらく、ラップトップのネットワークマネージャはイーサネットをWi-Fiよりも品質が良いと見なしているため、デフォルトですべてをイーサネットに送信しようとするため、イーサネットを設定した後はインターネットが利用できなくなります。Wi-Fiを再び使用するには、ラップトップでイーサネット接続に関連するファイルの[ipv4]セクション(イーサネットのネットワークマネージャGUIに表示される名前)に次の行を/etc/NetworkManager/追加する必要があります。

never-default=true

(GUI にイーサネットの「この接続のリソースにのみ使用する」チェックボックスのようなものがある場合 - 私の GUI では接続プロパティの ip4 セクションにあるので、代わりにそれを使用できます)。

そして最後に、IP テーブル ルールがデフォルトですべてを受け入れるままになっていると仮定すると、ワークステーションからのパケットはインターネットに送信されますが、ラップトップで NAT ルールを 1 つのコマンドで設定するまで、ラップトップにしか戻れません (eth0 は Wi-Fi 接続の名前で、次のように名前を確認できますsudo ifconfig)。

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

それでも動作しない場合は、ネットワーク マネージャーを再起動してください。

sudo service network-manager restart

すべて準備完了です。

関連情報