security.ubuntu.comはそのままで
2021/04/17
Ubuntuの/etc/apt/sources.list
にデフォルトで入っているsecurity.ubuntu.com
、セキュリティ意識の高い人ならここをむやみやたらにミラーに変えて良い物だろうか?と思った事があるはず。
これはミラーに同期の遅延や障害があってもセキュリティパッチだけは最新の物を取得できるようにするための仕組みなのだが、知らずにミラーに書き換えてしまっている人が居るみたいなので注意喚起も兼ねて記事をひとつ。
スポンサーリンク
理由
これに関してはSecurityTeam/FAQ - Ubuntu Wikiに次のように記載されている。
While packages are copied from security to updates frequently, it is recommended that systems always have the security pocket enabled, and use security.ubuntu.com for this pocket. For all other pockets feel free to use archive.ubuntu.com or an archive mirror. This combination will ensure you are able to download important updates immediately while taking advantage of the mirror network or archive.ubuntu.com for all other downloads. Ubuntu systems are configured in this manner by default.
(Google翻訳: パッケージは"セキュリティ"から"アップデート"に頻繁にコピーされますが、システムでは常に"セキュリティ"ポケットを有効にし、このポケットにはsecurity.ubuntu.comを使用することをお勧めします。他のすべてのポケットについては、archive.ubuntu.comまたはアーカイブミラーを自由に使用してください。この組み合わせにより、ミラーネットワークまたはarchive.ubuntu.comを利用して他のすべてのダウンロードを行いながら、重要な更新をすぐにダウンロードできるようになります。Ubuntuシステムは、デフォルトでこのように構成されています。)
「ポケット」というのは、sources.list
で設定する時に書く<リリース名>-<ポケット>
の部分。たとえばUbuntu 20.04ならfocal-updates
などの事(だと思う)
要するに、新しいパッケージは頻繁に<リリース名>-updates
にコピーされるけど、<リリース名>-security
を有効にしたうえで、このポケットにはsecurity.ubuntu.com
を使った方が良いよ、という趣旨
これはミラーに同期の遅延や障害があっても、セキュリティアップデートだけは常に最新の物をダウンロードできるようにする(なおかつ、普段は極力ミラーからのダウンロードだけで済ます)ための方法。
こんなsedはNG
ググると出てくるこういう感じのsedをしてはいけない。
sed -i.bak 's@http://.*/@<ミラー>@g' /etc/apt/sources.list
これに限らずsecurity.ubuntu.com
まで巻き込むタイプのsedはしない方が良い。(余談だが、上記の例だと関係のない外部のリポジトリやコメント内のURLまで巻き込んで書き換えてしまう)
普段はミラーへの同期が行われているためほとんど問題ないだろうけど、同期が遅れている時に緊急度の高いセキュリティアップデートが来る可能性も十分に考えられる。
読者の方々を不必要に脅しておくと、次のような"最悪パターン"が考えらえれる。
- 緊急度の高いのアップデートが来たときに、管理者が慌てて
apt full-upgrade
をするも同期遅延により更新が配布されず、(その事に気付いていない管理者は更新が出来たと思い込み満足するため)脆弱性が放置 Unattended-Upgrades
の直前に脆弱性対策用の更新パッケージが配布されるも、同期遅延により更新されず脆弱性が放置
これは脅すために考えたシチュエーションだが、可能性としてはゼロではない。(自分自身、jp.archive.ubuntu.com
がダウンしている状況に出くわしたことがあるので)
とにかく、security.ubuntu.com
はミラーにしない方がお作法としては正しいという事を覚えておこう。
通常はarchive.ubuntu.com
やjp.archive.ubuntu.com
を使うのがデフォルト設定なのでそれをターゲットにするだけで良い。
sudo sed -i.bak -r 's@http://(jp.)?archive.ubuntu.com/ubuntu/@http://jp.archive.ubuntu.com/ubuntu/@g' /etc/apt/sources.list
http://jp.archive.ubuntu.com/ubuntu/
の部分はお好きなミラーを指定しよう。
必要以上に範囲の広い正規表現には注意しよう。
おまけ
読まなくても死にません
短くて安全なsed?
さっき掲載したこの正規表現
sudo sed -i.bak -r 's@http://(jp.)?archive.ubuntu.com/ubuntu/@http://jp.archive.ubuntu.com/ubuntu/@g' /etc/apt/sources.list
正しさだけで言うなら実はこう記載しなければならない
s@http://(jp\.)?archive\.ubuntu\.com/ubuntu/@http://jp.archive.ubuntu.com/ubuntu/@g
更に言えばすでに設定されているミラーが日本だとは限らないのでこうする方が良いかもしれない。
s@http://([a-z]{2}\.)?archive\.ubuntu\.com/ubuntu/@http://jp.archive.ubuntu.com/ubuntu/@g
などと言っているとキリがない。設定変更で1度実行するだけなのでここまでするのは無駄っぽい。
妥協していく方向でもいくつかある。たとえばarchive.ubuntu.com
をjp.archive.ubuntu.com
にしたいだけなら次のようにしたのでいい。
s@archive.ubuntu.com@jp.archive.ubuntu.com@g
ただしこれは二回連続で実行するとjp.jp.archive.ubuntu.com
になってしまう。次のようにすれば良いが意図が分かりづらい。
s@/archive.ubuntu.com@/jp.archive.ubuntu.com@g
ちなみに次のようにするのはNG。
s@archive.ubuntu.com@mirror.example.com@g
なぜかと言うと、ミラーサーバーによってパス部は違うので、外部のミラーを使いたい時はパス部もしっかり指定する必要がある。
……などなどを考えると最初のパターンになる。
s@http://(jp.)?archive.ubuntu.com/ubuntu/@http://jp.archive.ubuntu.com/ubuntu/@g
もしくはmirrors.txtを使う
s@http://(jp.)?archive.ubuntu.com/ubuntu/@mirror://mirrors.ubuntu.com/mirrors.txt@g
この例は最速の設定という趣旨で掲載されていることが多いが、遅いサーバーを引く事もあるため必ずしも速いとは限らない模様。(それに、Dockerのようなca-certificatesがない環境でhttpsのミラーを引くと警告が出る)
jp.archive.ubuntu.comの実体
dig
すれば一瞬で分かるが、jp.archive.ubuntu.com
の実体はubuntutym.u-toyama.ac.jp
(2021/04/16現在)
~$ dig jp.archive.ubuntu.com
;; QUESTION SECTION:
;jp.archive.ubuntu.com. IN A
;; ANSWER SECTION:
jp.archive.ubuntu.com. 110 IN CNAME ubuntutym.u-toyama.ac.jp.
ubuntutym.u-toyama.ac.jp. 48533 IN CNAME ubuntutym3.u-toyama.ac.jp.
ubuntutym3.u-toyama.ac.jp. 48742 IN A 160.26.2.187
なのでjp.archive.ubuntu.com
を富山大学に指定し直すという事をしている人はその作業無駄なのでやらなくて良いです。
ちなみにjp.archive.ubuntu.com
はIPv6に対応していない。
security.ubuntu.comの実体
security.ubuntu.com
の実体はほぼarchive.ubuntu.com
だが、回線が追加されている。
こちらはarchive.ubuntu.com
~$ dig archive.ubuntu.com
;; QUESTION SECTION:
;archive.ubuntu.com. IN A
;; ANSWER SECTION:
archive.ubuntu.com. 60 IN A 91.189.88.142
archive.ubuntu.com. 60 IN A 91.189.88.152
こちらがsecurity.ubuntu.com
~$ dig security.ubuntu.com
;; QUESTION SECTION:
;security.ubuntu.com. IN A
;; ANSWER SECTION:
security.ubuntu.com. 60 IN A 91.189.88.152
security.ubuntu.com. 60 IN A 91.189.88.142
security.ubuntu.com. 60 IN A 91.189.91.39
security.ubuntu.com. 60 IN A 91.189.91.38
security.ubuntu.com
には、archive.ubuntu.com
にはなかった91.189.91.38
と91.189.91.39
が追加されている。
どちらも短めのTTL(60秒)でAレコードの回答を順繰りに切り替えるという典型的なDNSラウンドロビンの手法で回線を分散させている模様。
IPv6も同じようになっている。
こちらがarchive
~$ dig archive.ubuntu.com AAAA
;; QUESTION SECTION:
;archive.ubuntu.com. IN AAAA
;; ANSWER SECTION:
archive.ubuntu.com. 60 IN AAAA 2001:67c:1360:8001::23
archive.ubuntu.com. 60 IN AAAA 2001:67c:1360:8001::24
こっちはsecurity
~$ dig security.ubuntu.com AAAA
;; QUESTION SECTION:
;security.ubuntu.com. IN AAAA
;; ANSWER SECTION:
security.ubuntu.com. 60 IN AAAA 2001:67c:1360:8001::23
security.ubuntu.com. 60 IN AAAA 2001:67c:1360:8001::24
security.ubuntu.com. 60 IN AAAA 2001:67c:1562::15
security.ubuntu.com. 60 IN AAAA 2001:67c:1562::18
回線こそ追加されているものの、archive
もsecurity
も同じ回線を引く可能性があることからどちらも配信されているコンテンツは同じだと思われる。
だったら全てarchive.ubuntu.com
で良いのでは?という疑問も浮かんでくるが、これはおそらくネット上に掲載されているミラー設定の例がarchive.ubuntu.com
を書き換えるようになっているため、それらの記事に記載されている内容をコピペで実行しても大丈夫なようにドメインを分けたのではないかと予想している。(根拠なし)
だからこそ、雑なsedでsecurity.ubuntu.com
も巻き込んで書き換えてしまうのはお行儀が悪い。