はじめに
これは 限界開発鯖 Advent Calendar 2020 の19日目の記事です
14日目はsoshi_haramiさんの湯婆婆で学ぶScalaのエラーハンドリングです。
16日目はこるくさんのちょっとまって!そのFDD、捨てないで演奏してみませんか?
です
某高専生をしている学生です。
Twitter: @yangniao23
GitHub: @yangniao23
よろしくお願いします。
Proxy下でスマホを使うのは不便ですよね?
Proxy接続が強制される環境になったため,非常に感じております。
###そのままだとできないこと
- LINE : トークでは一部の通信がProxyを無視して443ポートへ繋がろうとします。通話は言わずもがな。
- Discord : Proxyに非対応の模様です。
- などなど......
方針
- Proxyに非対応のアプリをどうにかしてProxy経由で通信させたい!!
- 自由に通信したい! → 自分でProxyサーバを立てる
環境
- Host PC: ThinkPad T490 ~Arch Linuxを添えて~
- Smartphone: Galaxy S10
- 22番ポートが開放済み (が開放されていない場合は,こちらの記事などを参考にSSH over HTTPSの環境を整えましょう。 Proxy下でSSHを使いたい!!! | Qiita
- 53番ポートが開放済み(開放されていない場合は,Proxy経由で通信するなりDNS over HTTPSを使うなり工夫が必要です。)
自分のProxyサーバを立てる
適当なサーバを借ります。もしくは自宅等にサーバを用意します。
学生だとAzureで年間100$分のクレジットが貰えるので,期限を気にせずに運用できます。
参考までに自分の設定を掲載しておきます。
- リージョン: 東日本
- インスタンス: B1LS
- ディスク: Standard SSD 30GiB
Proxyサーバの立て方は記事が大量に投稿されているので,解説は割愛します。
私が参考にした記事
Squid の設定と使い方 | Qiita
PCに外部のProxyを持ってくる
SSHポートフォワーディングを活用します。
ssh -gNfL 0.0.0.0:8888:127.0.0.1:3128 user@example.com
上のようにして0.0.0.0:8888へHTTP Proxyを持ってきます。
また,動的ポートフォワーディングを活用しても構いません。この場合上のHTTP Proxyの構築作業は不要です。
ssh -gNfD 0.0.0.0:1080 user@example.com
動的ポートフォワーディングの場合,HTTP ProxyではなくSocks Proxyとなります。
Wi-Fiを飛ばす!
create_ap を使ってWi-Fiを飛ばします。
sudo create_ap [無線LANのNIC名] [有線LANのNIC名] --no-dnsmasq -d --ieee80211n --redirect-to-localhost [SSID名] [パスフレーズ]
スマホでの作業 ~Wi-Fiに接続する~
Wi-Fiに接続する際は,IPアドレスを静的にしてください。デフォルトゲートウェイはcreate_ap
を実行して作成された仮想NIC(ap0など)のIPアドレスに設定しましょう。
そして,HTTP Proxyの設定にはホスト名にデフォルトゲートウェイのIPアドレス,ポートはSSHで0.0.0.0へ持ってきたのと同じ値(今回の場合は8888)に設定してください。Socks Proxyの場合はここで設定する必要はありません。
設定例
IP : 192.168.42.100
Gateway : 192.168.42.1
Proxy Hostname: 192.168.42.1
Proxy Port : 8888
Dronyを導入する
PlayストアからDronyをダウンロードしてきましょう。
これはProxyをVPN接続に見せかけるソフトウェアです。
Dronyのインストールが完了したら,先程と同様にProxyの設定を行ってください。
Rulesは,443, 80番に届いた通信をProxyのポートへ転送するように設定するとうまく行きます。
個人的にハマったところ
- DronyでSocks Proxyがうまく動かない
- GitHubのIssueを見ると,どうやら未解決のようです。https://github.com/SuppSandroB/sandrop/issues/134
- スマホからProxyにつながらない!
- sshdの設定に問題がある可能性があります。
/etc/ssh/sshd_config
でAllowTcpForwarding
がyes
になっているか確認してください。 - create_apを再起動する,sshコネクションを一度切断して再度接続してみる,なども試してみるべきです。
- sshdの設定に問題がある可能性があります。