はじめに
色々な理由でサーバが直接インターネット接続する事を拒否している環境では
Proxyサーバ経由でインターネット接続するような構成をとる事があります。
先日、そのような環境でSUSEのリポジトリにアクセスするのに苦戦しましたので実施したことを残しておきたいと思います。
検証した環境
Azureの東日本リージョンにProxyサーバ(REHL8 + Squid)とクライアントのSLESのVMを配置。
Proxyサーバからは直接インターネットに出られるようにしています。
Proxyサーバの設定
Proxyサーバ側で名前解決が出来る必要があるため、東日本リージョンのSMTサーバを一つ選択してhostsに追加します。
DNSサーバに追加でも大丈夫です…多分。
Azure用のSMTサーバのIPアドレスはこちらから取得出来ます。
52.185.185.83 smt-azure.susecloud.net smt-azure
squidにhostsのエントリを利用するように設定します。
hosts_file /etc/hosts
設定後squidを再起動します。
systemctl restart squid.service
SLES(クライアント)の設定
proxyの設定をします。
再起動後もProxyを使用するように/etc/sysconfig/proxy
を編集します。
# 値を以下のように修正します。
PROXY_ENABLED="yes"
HTTP_PROXY="http://<Proxyサーバ>:<ポート>"
HTTPS_PROXY="http://<Proxyサーバ>:<ポート>"
hostsのIPアドレスをProxyサーバに合わせます。
# Added by SMT registration do not remove, retain comment as well
52.185.185.83 smt-azure.susecloud.net smt-azure
SLESのVirtual Machineデプロイ時にインターネット接続が出来ない場合はhostsにSMTサーバのエントリが入っていません。
その場合はhostsに手動で追加せず、リポジトリ情報をクリアして再登録を行います。
SUSEConnect --cleanup
rm -f /etc/SUSEConnect
rm -rf /etc/zypp/credentials.d/*
rm -rf /etc/zypp/repos.d/*
rm -f /etc/zypp/services.d/*
rm /var/lib/cloudregister/*
rm -rf /var/cache/zypp/*
registercloudguest --force-new
上記コマンド実行後、hostsにSMTサーバのエントリが登録されていることを確認出来ます。
もしProxyサーバのhosts内のIPアドレスと違う場合は合わせてください。
キャッシュ等の影響で違うIPアドレスが入ることがあります。
# Added by SMT registration do not remove, retain comment as well
52.185.185.83 smt-azure.susecloud.net smt-azure
zypperでリポジトリにアクセス出来ることを確認しました。
tamura-vm-sles:~ # zypper refresh
Repository 'SLE-Module-Basesystem15-SP3-Pool' is up to date.
Repository 'SLE-Module-Basesystem15-SP3-Updates' is up to date.
Repository 'SLE-Module-Containers15-SP3-Pool' is up to date.
Repository 'SLE-Module-Containers15-SP3-Updates' is up to date.
Repository 'SLE-Module-Desktop-Applications15-SP3-Pool' is up to date.
Repository 'SLE-Module-Desktop-Applications15-SP3-Updates' is up to date.
Repository 'SLE-Module-DevTools15-SP3-Pool' is up to date.
Repository 'SLE-Module-DevTools15-SP3-Updates' is up to date.
Repository 'SLE-Module-Legacy15-SP3-Pool' is up to date.
Repository 'SLE-Module-Legacy15-SP3-Updates' is up to date.
Repository 'SLE-Module-Public-Cloud15-SP3-Pool' is up to date.
Repository 'SLE-Module-Public-Cloud15-SP3-Updates' is up to date.
Repository 'SLE-Module-Python2-15-SP3-Pool' is up to date.
Repository 'SLE-Module-Python2-15-SP3-Updates' is up to date.
Repository 'SLE-Module-CAP-Tools15-SP3-Pool' is up to date.
Repository 'SLE-Module-CAP-Tools15-SP3-Updates' is up to date.
Repository 'SLE-Product-SLES15-SP3-Pool' is up to date.
Repository 'SLE-Product-SLES15-SP3-Updates' is up to date.
Repository 'SLE-Module-Server-Applications15-SP3-Pool' is up to date.
Repository 'SLE-Module-Server-Applications15-SP3-Updates' is up to date.
Repository 'SLE-Module-Web-Scripting15-SP3-Pool' is up to date.
Repository 'SLE-Module-Web-Scripting15-SP3-Updates' is up to date.
All repositories have been refreshed.
最後に
今回はAzure上のSLESで実行しましたがAWSやGoogle Cloudにおいても同じ設定で接続可能だと思います。
ただし、SMTサーバのIPアドレスは各クラウドで用意されているので注意してください。
AWS用SMTサーバ一覧
Google Cloud用SMTサーバ一覧
参考