はじめに
こんにちはponponnsanです。本日は、社内や遠くにあるサーバーに外部からアクセス可能にする方法を紹介しようと思います。
いつも忘れて検索して、あ、そうだったこれだったを繰り返してしまっているので、この機会にまとめてしまおうと思っています。
経緯
社内にあるwindowsサーバーに、VPN経由で在宅中でもアクセスしたい。ただ、毎回あれ、コマンドどうだったっけ...となるので、まとめる。
方法
- windowsのファイアーウォール設定
- wsl2に外部から接続するための設定
それぞれ手順を見ていきます。
windowsのファイアーウォール設定
「コントロールパネル」→「システムとセキュリティ」→「Windows Defenderファイアウォール」をクリック
そして、「受信の規則」をクリックしてから、画面右側の「新しい規則」をクリック
「新規の受信の規則ウィザード」画面が開くので、
「ポート」のラジオボタンをクリックし、「次へ」ボタンをクリック
「TCP」「特定のローカルポート」のラジオボタンをクリックし、
「特定のローカルポート」の空欄に、今回空けたいポート(今回の例では25565)を入力し、「次へ」
空けたいポートは複数設定可能
接続を許可する」のラジオボタンをクリックし、「次へ」ボタンをクリック
wsl2に外部から接続するための設定
WSL2のIPアドレスの確認
PowerShellは管理者権限で実行すること
wsl -e homename -I
で確認するとシンプルで分かりやすい
ここで複数出てきた人は、一度下記のコマンドでdockerのipを確認した方がいいかもしれません。
netsh interface portproxy show all
Address Port Address Port
--------------- ---------- --------------- ----------
* 80 172.19.90.182 80
ポートフォワードの設定
ちなみにポートフォワードとは、「ポートを右から左へと転送すること」をいうそうで、今私たちがやっているように、windowsで開けたポートをそのままwslに通すことはまさにそのままの意味ですね。
WSL2のIPアドレスがわかれば、ポートフォワーディングして、外部から接続できるか確認します。。
今回は、172.19.90.182
というipに、全ての接続元からの信号を、先ほどwindowsで開けた任意のポート(例として25565)から、WSL2の同じポートへつながるよう設定をします。
netsh interface portproxy add v4tov4 listenaddress=* listenport=25565 connectaddress=172.19.90.182 connectport=25565
もう一度、設定されているか確認します。
PS C:\Users\pon> netsh interface portproxy show all
ipv4 をリッスンする: ipv4 に接続する:
Address Port Address Port
--------------- ---------- --------------- ----------
* 25565 172.19.90.182 25565
無事、確認できました。
補足として、ポートフォワードの設定は複数を同時に設定することはできないようで、複数ポートを設定したい場合は、ポートを変更し、netsh interface portproxy add v4tov4 ...
をポート毎に試すしかないようです。
参考文献