Hyper-V 等の VM 上にプロキシと DNS を立てる

Pocket

本ブログでは、ちょいちょいプロキシ環境下での設定方法を紹介しているが、
そういったプロキシ環境下での動作の検証のため、以下を満たすプロキシサーバーを立てたい。

  • OS は Ubuntu 24.04
  • squid によって 8080 ポートにて HTTP プロキシする
  • bind9 によって自身のアドレスを proxy.example.com として名前解決する DNS サーバーとなる

とりあえず、 squid と bind9 をいれて、設定ファイルを必要最低限書き換えてみよう。

export CURRENT_IP_ADDRESS=`hostname -I | tr -s ' ' '\n' | tail -n 1`
sudo apt -y install squid bind9 bind9utils
sudo sed -i -r -e 's/^(#\s*)(http_access allow localnet)/\2/' -e 's/^http_port 3128/http_port 8080/' /etc/squid/squid.conf
sudo sed -i -e 's%^\s*\(//\)\?\s*forwarders {%        forwarders {\n                8.8.8.8;\n        };\n\0%' -e 's%^};%\0\nzone "proxy.example.com" in {\n  type master;\n  file "proxy.example.com.zone";\n};%' /etc/bind/named.conf.options
sudo tee /var/cache/bind/proxy.example.com.zone << EOF > /dev/null
\$TTL 86400
@       IN      SOA     proxy.example.com. root.proxy.example.com. (
                        2023070301      ;Serial
                        3600            ;Refresh
                        1800            ;Retry
                        604800          ;Expire
                        86400           ;Minimum TTL
)
@       IN      NS      proxy.example.com.
@       IN      A       $CURRENT_IP_ADDRESS
EOF
sudo systemctl restart squid named

これだけ。

環境変数 CURRENT_IP_ADDRESShostname -I コマンドで自身の IPアドレス の一つを設定しているが、あらかじめアドレスがわかっているなら、手動で設定しても良い。

(Hyper-V の場合)「内部ネットワーク」経由で同じネットワークに所属する、別の VM で DNS のアドレスを上記サーバーのアドレスにして、直接インターネットに繋がるネットワークから切断すれば、プロキシ経由を想定した通信のテストが行える。

export http_proxy=http://proxy.example.com:8080; export https_proxy=$http_proxy
curl https://example.com

https://example.com の HTML が返されれば成功だ。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください