メインコンテンツまでスキップ

Mudcat (mudcat)

概要​

Mudfish Networksに提供するHTTP/TCP/UDPポート共有サービスです。 https://ngrok.io に似た目的のサービスを提供することを目指しています。

このサービスを使用して、内部ネットワーク上のサービスを外部で共有するのを簡単に実行できます。現在、次のプロトコルをサポートしています。

  • HTTP

  • TCP

  • UDP

1命令で簡単に設置・利用できます。

ダウンロード​

https://www.mudcat.io/ からプログラムをダウンロードできます。

mudcatプログラムはユーザーの立場では実行ファイル1つで構成されているので、簡単にダウンロードして実行できます。

mudcat実行オプション​

mudcatプログラムを実行すると、以下の画面が表示されます。デフォルトでは、 mudcat は命令に基づいて使い方が少しずつ異なります。

$ ./mudcat 
Usage: mudcat [-vV] <command> [<args>]

Options:
-v # Increase the verbose level.
-V, --version # Show the version.

Commands:
http # Create a HTTP tunnel.
node # Show the mudcat nodes.
tcp # Create a TCP tunnel.
udp # Create a UDP tunnel.

現在サポートされている命令には次のものがあります。

  • http

    HTTP ポートを転送したい場合に使用できます。

  • node

    転送に使用する mudcat 中継サーバーの情報を表示します。

  • tcp

    TCP ポートを転送したい場合に使用できます。

  • UDP

    UDP ポートを転送したい場合に使用できます。

デフォルトで ./mudcat <command> -h を実行すると、追加のコマンドが提供するヘルプ情報をさらに確認できます。

mudcat httpコマンド​

このコマンドは、HTTP転送サービスを提供したい場合に使用できます。通常、内部的に作成しているサービスを外部に単純に公開したいときに使用できる命令です。

$ ./mudcat http -h
Usage: mudcat http [options]
--domain <domain> # Specify the domain name to access.
--local-addr <ip> # Specify the local IP to connect. Default
# value is 127.0.0.1
--local-port <port> # Specify the local port. Default value is 80.
--node-cc <cc> # Specify the country code to hint the
# selection of mudcat nodes.
--node-id <nid> # Specify the unique ID of mudcat node.

サポートするサブオプションには、次のものがあります。

  • --domain <domain>

    このオプションを指定すると、任意のドメインアドレス(通常は数字のアドレス)の代わりにユーザーが直接domainを指定できます。例えば --domain abc と指定した場合、割り当てられるドメインアドレスは abc.mudcat.io になります。

  • --local-addr <ip>

    このオプションは、HTTP 転送するローカル・アドレス (IPv4) を指定します。デフォルト値は127.0.0.1です。

    ただし、必ずしもその値が内部ネットワークアドレスを指す必要はありません。リモートの他のパブリック IPを指す場合は、そのIPを指定できます。

  • --local-port <port>

    HTTP転送するローカルポートを指定します。デフォルト値は80です。

  • --node-cc <cc>

    使用したい mudcat 中継サーバーの国コードを指定できます。たとえば、国コード JP を指定すると、日本側の mudcat 中継サーバーが自動的に割り当てられます。

  • --node-id <nid>

    使用したいmudcat中継サーバーのユニークIDを指定できます。各中継サーバーの unique ID は mudcat node 命令で取得できます。

mudcat node コマンド​

このコマンドは、mudcat中継サーバー情報を取得するために使用します。

$ ./mudcat node -h
Usage: mudcat node [--json-raw]
--json-raw # Prints the raw JSON output.

./mudcat node コマンドを使用すると、現在動作している mudcat 中継サーバーのリストが表示されます。サポートするサブオプションには、次のものがあります。

  • --json-raw

    中継サーバーのリストを JSON 形式で出力します。

mudcat tcp命令​

このコマンドは、TCP転送サービスを提供したい場合に使用できます。

$ ./mudcat tcp -h
Usage: mudcat tcp [options]
--conn-uuid <uuid> # Set the connection UUID to reuse.
--domain <domain> # Specify the domain name to access.
--local-addr <ip> # Specify the local IP to connect. Default
# value is 127.0.0.1
--local-port <port> # Specify the local port. If not specified,
# --remote-port value will be used.
--node-cc <cc> # Specify the country code to hint the
# selection of mudcat nodes.
--node-id <nid> # Specify the unique ID of mudcat node.
--remote-port <port> # Specify the remote port.

サポートするサブオプションには、次のものがあります。

  • --conn-uuid <uuid>

    このオプションの場合、以前に使用された remote port を再使用したい場合に使用できます。

    通常、割り当てられたリモートポートを使用して接続を切断すると、そのリモートポートがリソースを解放されるまで使用できなくなります。

    が古いConnection UUIDを知っている場合は、そのリモートポートをすぐに再利用できます。

  • --domain <domain>

    このオプションを指定すると、任意のドメインアドレス(通常は数字のアドレス)の代わりにユーザーが直接domainを指定できます。例えば --domain abc と指定した場合、割り当てられるドメインアドレスは abc.mudcat.io になります。

  • --local-addr <ip>

    このオプションは、TCP 転送するローカル・アドレス (IPv4) を指定します。デフォルト値は127.0.0.1です。

    ただし、必ずしもその値が内部ネットワークアドレスを指す必要はありません。リモートの他のパブリック IPを指す場合は、そのIPを指定できます。

  • --local-port <port>

    TCP転送するローカルポートを指定します。このオプションが指定されていない場合 --remote-port <port> の値はポート情報を使用します。

  • --node-cc <cc>

    使用したい mudcat 中継サーバーの国コードを指定できます。たとえば、国コード JP を指定すると、日本側の mudcat 中継サーバーが自動的に割り当てられます。

  • --node-id <nid>

    使用したいmudcat中継サーバーのユニークIDを指定できます。各中継サーバーの unique ID は mudcat node 命令で取得できます。

  • --remote-port <port>

    mudcat中継サーバーでリスニングするTCPポートを指定します。

mudcat udp命令​

このコマンドは、UDP転送サービスを提供したい場合に使用できます。

$ ./mudcat udp -h
Usage: mudcat udp [options]
--conn-uuid <uuid> # Set the connection UUID to reuse.
--domain <domain> # Specify the domain name to access.
--local-addr <ip> # Specify the local IP to connect. Default
# value is 127.0.0.1
--local-port <port> # Specify the local port. If not specified,
# --remote-port value will be used.
--node-cc <cc> # Specify the country code to hint the
# selection of mudcat nodes.
--node-id <nid> # Specify the unique ID of mudcat node.
--remote-port <port> # Specify the remote port.

サポートするサブオプションには、次のものがあります。

  • --conn-uuid <uuid>

    このオプションの場合、以前に使用された remote port を再使用したい場合に使用できます。

    通常、割り当てられたリモートポートを使用して接続を切断すると、そのリモートポートがリソースを解放されるまで使用できなくなります。

    が古いConnection UUIDを知っている場合は、そのリモートポートをすぐに再利用できます。

  • --domain <domain>

    このオプションを指定すると、任意のドメインアドレス(通常は数字のアドレス)の代わりにユーザーが直接domainを指定できます。例えば --domain abc と指定した場合、割り当てられるドメインアドレスは abc.mudcat.io になります。

  • --local-addr <ip>

    このオプションは、UDP転送するローカルアドレス(IPv4)を指定します。デフォルト値は127.0.0.1です。

    ただし、必ずしもその値が内部ネットワークアドレスを指す必要はありません。リモートの他のパブリック IPを指す場合は、そのIPを指定できます。

  • --local-port <port>

    UDP転送するローカルポートを指定します。このオプションが指定されていない場合 --remote-port <port> の値はポート情報を使用します。

  • --node-cc <cc>

    使用したい mudcat 中継サーバーの国コードを指定できます。たとえば、国コード JP を指定すると、日本側の mudcat 中継サーバーが自動的に割り当てられます。

  • --node-id <nid>

    使用したいmudcat中継サーバーのユニークIDを指定できます。各中継サーバーの unique ID は mudcat node 命令で取得できます。

  • --remote-port <port>

    mudcat中継サーバーでリスニングするUDPポートを指定します。

リリースノート​

0.0.3 (2023-01-21)​

  • 以下のオプションを新たに追加しました。

    • --domain
    • --node-id

0.0.2 (2023-01-20)​

  • ウィンドウで正しく動作しない問題を解決しました。

0.0.1 (2023-01-18)​

  • 最初のリリースです。基本的な実装をすると言ったが、依然として改善点も多く、バグも多いと予想されます。少しずつ進んでいく様子を見せるようにします。