WindowsPCとLinuxサーバーをブリッジ接続する方法

# はじめに

自宅で無線ルーターから離れた場所（デスク）にあるLinux機をインターネットに接続するため、ブリッジ接続を使ってみました。
設定にかなり手こずったので、設定メモとして記録しています。

# ブリッジ接続の模式図

* WindowsのPCと無線ルーターはWi-Fiで接続しています。
 * Wi-Fi側のIP(192.168.10.100)は、DHCPで動的に割り当てられたIPとなります。
 * それ以外のIP(192.168.10.240, 192.168.10.241)は、手動で静的に割り当てられたIPとなります。
* Windows機とLinux機は有線LAN（クロスケーブル）で接続しています。
  * 最近のネットワーク機器（L2スイッチなど）はケーブルの自動判別機能を持ったものが大半だと思いますが、PC同士の接続の場合はクロスケーブルが必要になると思われます。

![ブリッジ接続.png](https://qiita-image-store.s3.amazonaws.com/0/312166/bd227d87-397f-ecb3-4c34-4da55129cb82.png)


# 設定手順

## 1. 有線LANと無線LANを同時に使えるようにする

* ブリッジ用に使ったPCはWindows10 Homeですが、このOSではデフォルトで「有線LAN接続時に無線LANが無効化される」という設定になっています。
 * Windows8以降は、デフォルトでこの設定になっているようです。
* この設定のままだと、有線LANと無線LANを同時に使えないため、ブリッジ接続が正しく動作しません。
* そのため、ブリッジ接続の設定に先立って、以下の手順で設定を変更しておきます。

### 1-1. ローカルグループポリシーエディターを使用可能にする

* 「ローカルグループポリシーエディター」を使うと、「有線LAN接続時に無線LANが無効化される」という設定を簡単に解除できますが、Windows10 Homeの場合、デフォルトではローカルグループポリシーエディターを使えません。
* そこで、[こちらのURLの手順](https://www.japan-secure.com/entry/how-to-use-local-group-policy-editor-in-windows-10-home.html)に沿ってローカルグループポリシーエディターを使用可能な状態にしました。

### 1-2. 「有線+無線での2回線構成の場合、起動時に無線が自動で接続されない」設定を無効化する

以下の手順は、[Microsoftの公式ページ](https://support.microsoft.com/ja-jp/help/2835190)の手順と同じです。

* [ファイル名を指定して実行]を開き、`gpedit.msc`と入力してEnterを押します。
* ローカルグループポリシーエディターが開いたら、[コンピューターの構成] > [管理用テンプレート] > [ネットワーク] > [Windows 接続マネージャー]と進み、Windows 接続マネージャーに入ります。
* [インターネットまたは Windows ドメインへの同時接続の数を最小化する]という項目を選び、設定値を[無効]にします。
 * デフォルト値は[未構成]でした。

![gpedit-msc_02.png](https://qiita-image-store.s3.amazonaws.com/0/312166/7fe3ea9d-16be-a82c-2b1d-73c8cf0c5fcb.png)

## 2. VirtualBoxなどのブリッジ接続を解除する

* VirtualBoxなどの仮想NICにブリッジ接続している場合、有線LANと無線LANとの間で正常にブリッジ接続できません。
 * 私は試していませんが、Hyper-Vの仮想スイッチとの間にブリッジ接続を使っている場合も、同様にブリッジ接続が出来ない可能性があります。
* そのため、VirtualBoxを利用しているのであれば、全ての仮想マシンのネットワーク設定を確認して、ブリッジ接続の設定があれば解除しておきます。


## 3. ブリッジ接続を設定する

* コントロールパネルを開き、[ネットワークと共有センター] > [アダプタの設定の変更]と進みます。
* 開いた[ネットワーク接続]画面で、無線LANと有線LANのネットワークカードを選択した状態で右クリックして、開いたメニューから[ブリッジ接続]を選択します。
* ブリッジ接続が完了すると、下の図のように[ネットワークブリッジ]というアダプタが画面上に出現します。
 * これだけでブリッジ接続は完了です。

![ブリッジ接続_03.png](https://qiita-image-store.s3.amazonaws.com/0/312166/cf826850-8e86-c302-4c6d-892c41e2e842.png)
![ブリッジ接続_04.png](https://qiita-image-store.s3.amazonaws.com/0/312166/59382db3-1a93-260d-88a7-24e7b800c941.png)

## 4. ForceCompatibilityModeの設定

* ブリッジ接続を設定した後、インターネットに接続できない場合は`ipconfig`コマンドでブリッジアダプターに対してDHCPで付与されたIPアドレスを確認します。
* このIPアドレスが169.254...となっている時は、DHCPサーバー（※ここでは無線ルーター）に接続できていないため、以下の手順でForceCompatibilityModeをenabledにすると接続できます。
 1. コマンドプロンプトを管理者モードで開きます。
 2. `netsh bridge show adapter`と入力して、現在のブリッジアダプターの状態を確認します。 ここでブリッジ接続に利用しているネットワークカードのForceCompatibilityModeが"unknown"や"disabled"となっている場合、次の手順に進みます。
 3. `netsh bridge set adapter {アダプタの番号} e`と入力して、ForceCompatibilityModeを"enabled"にします。
     * 設定値の名称（ForceCompatibilityMode）からすると、何らかの互換性を強制的に有効にしているようですが、何の互換性かは分かりませんでした...
 4. 再び`netsh bridge show adapter`と入力して、ForceCompatibilityModeが"enabled"となっていることを確認します。

```
C:\WINDOWS\system32>netsh bridge show adapter

----------------------------------------------------------------------
 ID AdapterFriendlyName         ForceCompatibilityMode
----------------------------------------------------------------------
  1 イーサネット                      disabled
  2 Wi-Fi 2                     disabled
----------------------------------------------------------------------

C:\WINDOWS\system32>netsh bridge set adapter 1 enable

C:\WINDOWS\system32>netsh bridge set adapter 2 enable

C:\WINDOWS\system32>netsh bridge show adapter

----------------------------------------------------------------------
 ID AdapterFriendlyName         ForceCompatibilityMode
----------------------------------------------------------------------
  1 イーサネット                      disabled
  2 Wi-Fi 2                     enabled
----------------------------------------------------------------------
```

# まとめ

* Windows上でのブリッジ接続について調べると、「2つのネットワークカードを選んで、"ブリッジ接続"を選ぶだけ」と書いてあるサイトが多いです。
* ですが、新しいOSだと「有線LAN接続時に無線LANが無効化される」という設定があるとは思いませんでした。
 * 色々調べてみると、省電力設定の一つだそうです。
* また、「VirtualBoxのブリッジ接続が存在すると正しくブリッジ接続できない」というのは全くの盲点でした。
 * VirtualBox上の仮想マシンは、基本的に「NAT＋ホストオンリーアダプター」にすべきかもしれません...