※この記事はProxyを華麗にスルーしてWi-Fiを飛ばすには -Qiitaの環境を前提としています。まだお読みでない方はご一読の上こちらの記事をお読みください。
環境をざっくりと解説
- PC: ThinkPad T490 Arch Linux
- 認証付きProxy必須の環境
- Azure上に構築したHTTP ProxyをSSHポートフォワーディングで持ってきている
- create_apでWi-Fiを飛ばしていて,スマホはDronyを使いHTTP Proxy非対応のアプリもProxy経由で通信できるようにしている
困ったこと
- スマホは認証付きProxyだとうまく接続できないため,常時Azure上に構築したプロキシに接続させているから,追加でAzureの通信料金が発生する
- 認証付きProxyの方だと見れないサイトがある:Youtubeなど生活必需品
解決するために
ローカルにSquidを使ってProxyを構築し,時間帯・アクセス先のサイトに応じて代理接続するProxyサーバ先を選択できるようにした
192.168.1.1:8080に認証付きProxy,0.0.0.0:8888に外部Proxyがある環境の例 重要な設定を抜粋
/etc/squid/squid.conf
(前略)
cache_peer 192.168.1.1 parent 8080 0 no-query no-netdb-exchange no-digest login=ユーザ名:パスワード proxy-only
cache_peer 0.0.0.0 parent 8888 0 no-query no-netdb-exchange no-digest default
acl sorting time SMTWHF 1:00-6:00
acl blacklist dstdomain "/usr/local/etc/squid/blacklist"
(中略)
# ローカル環境には上位のプロキシを通さず直接接続
acl developersegments1 dst 192.168.1.1/24
always_direct allow developersegments1
never_direct allow all
# キャッシュしない
cache deny all
# 1:00から6:00にblacklistに掲載されているサイトにアクセスしたときは192.168.1.1に代理接続 **させない**
cache_peer_access 192.168.1.1 deny blacklist sorting
blacklist
.qiita.com
.youtube.com
.[domain]でそのドメイン全てを対象にできる
これで設定したポートに接続すると,192.168.1.1へ認証なしで優先的に接続され,1:00から6:00にblacklistに設定したサイトへアクセスしようとした場合は0.0.0.0のproxyへ接続される。