windowsPCをルーターにしたい.
Linuxで言うところの「echo 1 > /proc/sys/net/ipv4/ip_forward」を施します。
「管理ツール」->「サービス」から「Routing and Remote Access」を有効にします。
初回は「スタートアップの種類」で「無効」とかになっているかと思います。
それを「自動」に切り替えて、「開始」を押下します。最後に「OK」ボタンを押下します。
これが有効になっていると、「ipconfig /all」の表示の際、「IP ルーティング有効......: はい」となります。
ルーターと言ってもnatpかな? 高度なことはできないけど、場合によってはこれで十分かと
まずwindowsPCをルーターにするにはwindowsPCに2個nicが必要です.
2つのnicを据え付けて、コントロールパネルの「ネットワークと共有センター」にてインターネットに繋がっている側のnicの
「状態」から「プロパティ」画面を開きます。そこに「共有」タブがあります。
それを開いて「インターネット接続の共有」から下記のように「ネットワークのほかのユーザに、このコンピューターのインターネット接続をとおしての接続を許可します」を有効にします。
そして「OK」ボタンを押下して「プロパティ」を閉じて、「状態」パネルも閉じます。
これでインターネットに繋がっていないnicは強制的に
ipアドレス:192.168.137.1
サブネットマスク:255.255.255.0
になります。
これで内部「192.168.137.0/24」側から外(インターネット側)への通信が確保されます。
ここでは下記のような環境を構築しようとしています。
内部のLinuxマシンはそれぞれ、
192.168.137.2と192.168.137.3としてサブネットマスクは24ビットの255.255.255.0、GWは192.168.137.1とします。
DNSはGWと同じく 192.168.137.1 とかでもOK
これで内部のLinuxマシンはyum updateらができます。
ルーターであるwindowsPCにログインもしくはRemoteDesktopでログインして、そこからTeratermやらMobatermXを使って
内部の計算機にアクセスるのもあるが、それだと利用者がログインしているユーザに限定されてしまう。
それを回避するためwindowsPCにポートフォワードの設定を施して外部(192.168.0.0/24)のPCから直接Linuxマシンにアクセスできるようにしてみる.
windowsPCにて「コマンドプロンプト」を起動します。
そして「runas /user:administrator cmd」と実行して管理者権限で動く「コマンドプロンプト」を用意します。
ほかにもいろいろと管理者権限の「コマンドプロンプト」の作り方はありますけど
その管理者権限で動く「コマンドプロンプト」内で下記を実行します。
(設定)
netsh interface portproxy add v4tov4 listenport=8122 listenaddr=0.0.0.0 connectport=22 connectaddress=192.168.137.2
netsh interface portproxy add v4tov4 listenport=8222 listenaddr=0.0.0.0 connectport=22 connectaddress=192.168.137.3
(確認)
netsh interface portproxy show v4tov4
(削除)
netsh interface portproxy delete v4tov4 listenport=8122 listenaddr=0.0.0.0
netsh interface portproxy delete v4tov4 listenport=8222 listenaddr=0.0.0.0
*port番号の上限は 65535 です. 1024から65535のPRIVATE PORTSを使います.
これでwindowsPCの
ポート番号 8122 は内部の 192.168.137.2 の 22(ssh) に繋がり
ポート番号 8222 は内部の 192.168.137.3 の 22(ssh) に繋がりました.
*一度設定すると再起動しても元には戻りません。
外部からのwindowsPCへのアクセスは ファイアウォール で防御されています。
ここではポート 8122 と 8222 が外部からのアクセスに使用されることになるので、このポートを許可する設定をwindowsPCに施します。
コントロールパネルから「Windows ファイアウォール」を開いて、左ペインから「詳細設定」リンクをクリックします。
そうして開いた「セキュリティが強化されたwindows ファイアウォール」画面の左ペインで「受信の規則」を選択します。
同じ画面で、右ペインから「新しい規則...」をクリックします。
新に「新規の受信の規則ウイザード」画面が表示されます。
ここで、許可したいのがポートなので、「ポート」を選択して、「次へ」を押下します。
次にポート番号を指定します。ここでは「8122」と「8222」なので「8122,8222」と入力して「次へ」を押下します。
次に指定したポート番号は許可したいので、「接続を許可する」を有効にして「次へ」を押下します。
適用先ですが、特段意識してないのならすべて選択してOKかと。「次へ」を押下します。
最後に名前とかこの説明を記載します。記入して「完了」ボタンを押下します。
これで完了です。
windowsマシンの「port 8122」とかにアクセスするので、下記のようにアクセスする
「-l」はユーザ名、「-p」はポート番号、「-Y」はXフォワード
[illya@c ~]$ ssh -l root 192.168.0.100 -p 8122 -Y
root@192.168.0.100's password:
[root@localhost ~]#
TeraTermnなら下記のようにしてアクセスします。
ルーターとなったwindowsPCを再起動すると内部から外部への接続ができなくなる現象が生じるみたい。
回避策は
「インターネット接続の共有」から下記のように「ネットワークのほかのユーザに、このコンピューターのインターネット接続をとおしての接続を許可します」を一旦外して「OK」ボタンを押下して有効にさせ、その後再度開いて「ネットワークのほかのユーザに、このコンピューターのインターネット接続をとおしての接続を許可します」を有効にして「OK」ボタンを押下してください。
こうすれば内部から外部への接続が復活します。
*再起動するとこの部分がうまく動かなくなるみたい。
Microsoft様からは下記のような回避方法を提出しています。
https://support.microsoft.com/ja-jp/help/4055559/ics-doesn-t-work-after-computer-or-service-restart-on-windows-10
研究所内のwindows routerを設置して、wireguard経由でrouter内部のアクセスするには、まずは windows router にudpの穴を作る必要がある
例えば 192.168.0.100 に届いたwireguardな 51820/udp 要求を内部の 192.168.137.10 の 51820/udp に届けさせてみる.
netsh interface portproxy add v4tov4 listenport=51820 listenaddr=0.0.0.0 connectport=51820 connectaddress=192.168.137.10
っが、残念なことに netsh は udpをサービスしてませんでした...そうなるとwindows serverOSに変えてRRASを使うとできるそうな...