/portproxy

GUI replacement of "netsh portproxy" command (only for Windows)

Primary LanguageJavaScriptMIT LicenseMIT

portproxy

portproxyのスクリーンショット

  • Windowsのポートフォワード設定をGUIで管理できるツールです
  • ソフトの中で netsh interface portproxy delete|add|show v4tov4 ... コマンドを呼び出しています
  • SSHトンネルではなくて、ただのポート転送です

動機

DockerでWebサービス等を開発する際、ローカルPC内の開発環境へスマホからアクセスしたいことがあります。
ですが、そのままDockerのIPアドレスにアクセスしても繋がりません。スマホが繋がっているLANとDockerコンテナが動いているネットワークが別々だからです。
そこで、ローカルPC上でポートフォワード(ポート転送)をかけてネットワーク間の橋渡しをしてやれば、スマホからDockerコンテナにアクセスできるようになります。

ローカルPCがWindowsの場合、ポートフォワードはnetshコマンドを使って設定します。
ですがこのコマンド、パラメータは多いしサブコマンドも長くて覚えられません。私なんぞはそもそもWindowsの細かいコマンドを覚える気がありませんので、毎回ググっているのが現状です。 しかも、ポートフォワードを設定するには管理者権限が必要なのでコマンドプロンプトを管理者権限で起ち上げなければならないのですが、これもよく忘れて怒られます。
さらに、netshコマンドを打つ前にローカルPCのアドレスを調べておく必要がありますが、これもよく忘れます。
すごく面倒です。

というわけで、GUIでポートフォワードの設定がサクッとできるツールを作りました。

インストール

リリースページ からexeファイルをダウンロードできます。
インストールは不要で、ダウンロードしたexeを起動すればOKです。
起動の際、「不明なアプリの実行」的な警告が出るかもしれません。

自分でビルドする場合

自分でビルドする場合は下記のコマンドを実行します。

$ npm run build
$ npm run package

これで、portproxy\buildの中にexeファイルが出力されます。

使い方

使い方を説明するようなソフトではないですが、いくつか注意点を書きます。

  • Windowsはデフォルトでパケットフィルタが有効になっているので、ポートフォワードを設定してもそのままではパケットが通りません。ポートを開放してパケットが通るようにしましょう。PCを再起動してもパケットフィルタの設定は残ります
    参考:https://pc-karuma.net/windows-10-firewall-open-port/

  • IPアドレスの欄に入力しようとすると候補が出ます。候補に表示されるのはPCのローカルIPですので、それっぽいのを選べば大抵は適切な設定になります

  • ポートフォワードの設定はPCを再起動しても残ります

技術的な観点から

このソフトはElectronとhyperappを使っています。
Electron的な環境は、以前からチャンスがあれば使ってみたいと思っていたのですが、ちょうど理由と時間ができたので使うことができました。
portproxyは小さいソフトなので、Electronやhyperappのサンプルとしても役に立つと思っています。
もしかしたら下記のような用途で見るべき点があるのかもしれません。

  • Electronプロジェクトの構成(バンドラなし)のサンプルとして
  • electron-builderの設定サンプルとして
  • Electronとhyperappを同時に使うサンプルとして
  • テーマを設定できるElectronアプリのサンプルとして(起動時にチカチカするのを避ける)

ライセンス

MIT

最後に

不具合とか機能追加とか改善とか、何かありましたらイシューに書いてください。
「使ったよ」と報告してもらえると私が嬉しくなります。