ローカルサーバを晒す
このツールで一番よく使われる(と思われる)ユースケース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
使った例を紹介したいと思います。