ローカルサーバを晒す
このツールで一番よく使われる(と思われる)ユースケース2点、公式サイトのドキュメント和訳して掲載します。
- LANのコンピュータにSSHでアクセスする
- カスタムドメインでLAN内のWebサービスをアクセスする
LANのコンピュータにSSHでアクセスする
- サーバAで
frps.iniを修正してfrpクライアントから接続したいポートをbind_portに書いてください:
| |
frpsをサーバAで起動します
./frps -c ./frps.ini
- サーバB上で、
frpc.iniを修正してあなたのfrpsサーバのパブリックIPをserver_addrフィールドに書いてください:
| |
local_port (クライアント側でリッスンされる) と remote_port (サーバ側で公開される) は frp システムに出入りするトラフィックのためのものであり、server_port は frp システム間で使用されることに注意してください。
- サーバBで
frpcを起動する:
./frpc -c ./frpc.ini
- 別のマシンから、このようにしてサーバBにSSHします(ユーザ名を
testとします)
ssh -oPort=6000 test@x.x.x.x
カスタムドメインでLAN内のWebサービスをアクセスする
独自ドメイン名でテストするために、NATネットワークの中にあるローカルウェブサービスを他の人に公開したいことがありますが、残念ながらドメイン名をローカルIPに解決することはできません。
frpを使えばHTTP(S)サービスを公開することは可能です。
frps.iniを修正し、vhost の HTTP ポートを 8080 に設定:
| |
frpsを起動
./frps -c ./frps.ini
frpc.iniを変更し、server_addrにリモートの frps サーバの IP アドレスを設定します。local_portはウェブサービスのポート番号です。
| |
frpcを起動する
./frpc -c ./frpc.ini
www.example.comのAレコードをリモートfrpsサーバの公開IPに変更するかまたはCNAMEレコードを指定するURL
http://www.example.com:8080を使ってローカルのWebサービスにアクセス
以上、公式の抜粋和訳終わり
赤の他人に使わせない
基本公式のドキュメントで動くのですが、このままだと、だれでもあなたのfrpsを使える状態になっちゃいますのでトークンを設定するべきだと思います。
| |
サーバ・クライアントともに他人が推測不可能な文字を[common]に書いてください。
設定ファイル作るの面倒だ
ngrokと比べて、frpcで接続するのにいちいち設定ファイルを作るのがめんどくさいと言う人にはコマンドラインオプションもあります。公式の例だとこんな感じ:
frpc http -d www.example.com -l 80 -s x.x.x.x:7000
HTTPSを使いたい
type = https をかえます、ただしexample.comのSSL証明書の設定は別に行う必要があります。これについては機会があればtraefik
使った例を紹介したいと思います。