プロフィール

髭山髭人(ひげひと)

自分の書いた記事が、一人でも誰かの役に立てれば...
活動信条の一つとして「貴方のメモは、誰かのヒント」というのがあります。

このサイトについて

本家HP(packetroom.net)から切り離した いわゆる技術メモ用のブログで、無料レンタルサーバーにて運用しています。広告表示はその義務なのでご容赦。
XREA さんには長年お世話になっています

サ終した Qrunch(クランチ) と呼ばれる技術ブログサービスに掲載していた記事も含まれます

iptablesのバグでfirewalledがあおりを受けたのでbuster-backportsから引っ張ってきた話

雑に流れを説明すると

  • buster-backports という所から 任意のパッケージを持ってきたかった
  • /etc/apt/sources.list を編集して、引っ張り元を登録
  • そのままだと「引っ張り元が信頼できない」と小言を言われるので、必要な情報を追加登録
  • その後 sudo apt update を仕掛ける
  • 最後に apt-get のオプションを使って buster-backports から任意のパッケージをインストール

事の始まり

firewalled の設定中に謎のエラー発生
設定を与えて反映させようとしてもなぜか失敗するというもの。

$ sudo firewall-cmd --reload
Error: COMMAND_FAILED: '/usr/sbin/ip6tables-restore -w -n' failed: ip6tables-restore v1.8.2 (nf_tables):
line 4: RULE_REPLACE failed (No such file or directory): rule in chain INPUT
line 4: RULE_REPLACE failed (No such file or directory): rule in chain OUTPUT

sudo firewall-cmd --check-config
とかいう、いかにも「設定が正しいかどうか確認します」系コマンドでも、返答は success

エラーログで調べたらこんなものが

https://github.com/saltstack/salt/issues/55110

「Firewalldでいじいじしてるんだけどエラる(意訳)」というものなのですが、それに対するレスで

Debian 10のiptablesのバグであることが判明しました
Debian10のiptablesのバージョン1.8.2はバグがあります。
buster-backportsから1.8.3にアップグレードすることで修正できます。

とありました。

iptables -V で確認すると

iptables v1.8.2 (nf_tables) の応答..( ゚д゚)

言及されてた 1.8.2 じゃないですか!!

とりあえず更新すると良いのね?...という事で、
「 buster-backports って何ですかね...? 」って所から色々調べました

どういう理屈と仕組みで、どうやんのよ

buster-backports でググったら公式ページが出てきたので、翻訳掛けて読んでみました

https://www.debian.org/doc/manuals/debian-reference/ch02.ja.html

「定期的に更新しましょうね」みたいなノリで
sudo apt update
sudo apt upgrade
とかの実行(OS内ソフト...パッケージ群の更新)を行う、というのはワリと良くされていると思います。

これら更新処理?を行うとき、ネットに繋いで引っ張ってくるファイル群の細かい設定..
(多分ですが)雑に言えば「このソフトはここから持ってきてね」みたいなものが書かれているファイルがあるようです

/etc/apt/sources.list がそれに相当するのだとか

cat /etc/apt/sources.list で開くと、自分の環境ではこんな応答になりました

deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

で、この「取ってくる先」の概念が複数存在していて、
「安定版」とか「テスト版」とか「不安定版」とか 色々あるらしいです。

3行中、下の2行がコメントアウトされて無効になっていますね。

で、有効になっているこの1行を読み解くと...

deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

行中に buster と書いてあるのがわかります。
これは公式サイトの表に照らし合わせると stable (buster) ... 安定版(buster) のリリース とありました。
「普段は安定版を使ってね」と、元からそう設定してくれているみたいです。

なので普段から、
sudo apt update
sudo apt upgrade
といった更新処理でも意識することなく、安定版に更新してくれる恩恵を受けられるのだとか。

そしてこの /etc/apt/sources.list を編集し、
"buster とは別に buster-backports としてインストールできる選択肢" を追記して増やしてあげます

後で同じ事を書きますが、この設定が成功すれば、
sudo apt-get install -t buster-backports iptables
のようなコマンドにて、安定版(buster)の一歩手前である buster-backports から、任意のパッケージ(ここでいう iptables)を引っ張ってこられる様です。

buster-backports の取得先

debian.org - Debian アーカイブサイトのリスト

/etc/apt/sources.list の編集やら buster-backports の設定やらでググると、追加する行(URL)の内容がワリと言及しているページによって異なるんですが、どうやら単純にミラーサイトとか日本サーバーとかそういうのが沢山あるだけっぽいので、そこまで神経質にならなくても良さそうです。

debian.or.jp - ミラーサイトについて

今回追加(有効)にする行はこちら
deb http://ftp.jp.debian.org/debian buster-backports main contrib non-free

http://ftp.jp.debian.org/debian のURLは debian.or.jp の解説によると「Debian 公式プライマリミラーサイト」だそうです。

閑話:ワイのOS raspbian だけど

あと、少しだけ例外的な話なんですが、今回弄っている自環境マシンは RaspberryPi 3B+ です。
こちとらOSが raspbian なので 「取得先、debianのサーバーでええんか? raspberrypi.org とかじゃないんか?」 と思ったんですが、"raspbian buster-backports" とかで調べても、検索結果が割と軒並み「debian.orgに繋ごうぜ!」みたいな解説なので、そういうもんなんだな~ と、気にしない事にしました。

NO_PUBKEY をください

実際に buster-backports の取得先設定を追記したのち sudo apt update を実行すると下記エラーログが。
どうやら取得先を記載しただけでは「信頼に欠ける」として、まだ弾かれる模様。

ログに出ているキーとやらを 「ここ信頼して💕」 と登録してやると良いのだとか

下記でいう所の 04EE7237B7D453EC648ACFD622F3D138 がこれに相当

sudo apt-get update 実行ログ

Get:1 http://ftp.jp.debian.org/debian buster-backports InRelease [46.7 kB]
Err:1 http://ftp.jp.debian.org/debian buster-backports InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 04EE7237B7D453EC NO_PUBKEY 648ACFD622F3D138
Hit:2 http://archive.raspberrypi.org/debian buster InRelease
Get:3 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
Reading package lists... Done
W: GPG error: http://ftp.jp.debian.org/debian buster-backports InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 04EE7237B7D453EC NO_PUBKEY 648ACFD622F3D138
E: The repository 'http://ftp.jp.debian.org/debian buster-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

ちなみに、buster-backports が正しく登録されていないのに
sudo apt-get install -t buster-backports iptables
のように先走って buster-backports からインストールしようとすると

>E: The value 'buster-backports' is invalid for APT::Default-Release as such a release is not available in the sources

>値 'buster-backports' は APT::Default-Release には無効です。

のような感じで怒られます

パッケージの認証キーとやらを登録

「public key を(信頼できるものとして)登録してくれ」という感じらしいので、以下のように登録

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138

  • 実行ログ

    Executing: /tmp/apt-key-gpghome.Jmw857puEW/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
    gpg: key E0B11894F66AEC98: public key "Debian Archive Automatic Signing Key (9/stretch) ftpmaster@debian.org" imported
    gpg: Total number processed: 1
    gpg: imported: 1

Executing: /tmp/apt-key-gpghome.9g19YOswG6/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
gpg: key DC30D7C23CBBABEE: public key "Debian Archive Automatic Signing Key (10/buster) ftpmaster@debian.org" imported
gpg: Total number processed: 1
gpg: imported: 1

...んでも、こちらとら raspbian というか Debian なのに、キーサーバーはubuntuさんトコでええんか..?(゚ω゚) ワリと謎い..

試してないけど、
sudo apt-key adv --keyserver keyring.debian.org --recv-keys [キー]
とかやっても通るんだろうか? 教えてエロい人

登録後に sudo apt update

実行後に再び sudo apt update をかます

  • 実行ログ

Get:1 http://deb.debian.org/debian buster-backports InRelease [46.7 kB]
Get:2 http://archive.raspberrypi.org/debian buster InRelease [32.6 kB]
Get:3 http://deb.debian.org/debian buster-backports/main armhf Packages [371 kB]
Get:4 http://deb.debian.org/debian buster-backports/main Translation-en [321 kB]
Get:5 http://deb.debian.org/debian buster-backports/contrib armhf Packages [7,116 B]
Get:6 http://deb.debian.org/debian buster-backports/contrib Translation-en [7,268 B]
Get:7 http://deb.debian.org/debian buster-backports/non-free armhf Packages [9,768 B]
Get:8 http://deb.debian.org/debian buster-backports/non-free Translation-en [33.3 kB]
Get:9 http://raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
Get:10 http://archive.raspberrypi.org/debian buster/main armhf Packages [336 kB]
Get:11 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages [13.0 MB]
Fetched 14.2 MB in 16s (876 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
7 packages can be upgraded. Run 'apt list --upgradable' to see them.

無事取りに行けたっぽいので、とりあえず
sudo apt-cache policy -t buster-backports iptables にて
"buster-backports でのインストール対象となる iptables のバージョン情報" を確認

ちなみに平時だと sudo apt-cache policy iptables での確認となる模様

改めて、対象パッケージをインストール

https://manpages.debian.org/testing/apt/apt-get.8.ja.html

パッケージにイコール記号とバージョンを続けることで、  
選択したバージョンのパッケージをインストールすることができます。
つまり、指定のバージョンのパッケージをインストールするように選択する、ということです。
別の方法としては、ディストリビューションを特定するのに、
パッケージ名に続けて、スラッシュとディストリビューションのバージョンやアーカイブ名 (stable, testing, unstable) を記述できます。

sudo apt-get install -t buster-backports iptables 実行ログ

-t buster-backports 部分は ターゲットオプション で buster-backports を指定したって感じですかね。

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  ipset libipset11 python3-decorator python3-selinux python3-slip python3-slip-dbus
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libip4tc2 libip6tc2 libnftnl11 libxtables12 netbase
Suggested packages:
  firewalld
Recommended packages:
  nftables
The following NEW packages will be installed:
  libip4tc2 libip6tc2
The following packages will be upgraded:
  iptables libnftnl11 libxtables12 netbase
4 upgraded, 2 newly installed, 0 to remove and 55 not upgraded.
Need to get 513 kB of archives.
After this operation, 120 kB disk space will be freed.
Do you want to continue? [Y/n]

あとは Y 押しときゃ進みますね。

▼ ちなみに、iptables インストール中にこんな感じの通知が表示されました。
( 本筋とは特に関係ないです )

apt-listchanges: News
---------------------

iptables (1.8.4-1) unstable; urgency=medium

    All the iptables binaries have been moved away from /sbin to /usr/sbin.
    Compatibility symlinks were provided during the Buster release, but they
    have been dropped now.
    Please make sure your scripts aren't using hardcoded binary paths.
    .
    Also, please note that iptables is no longer Priority: important. This
    means it is not installed by default in every system. It has been replaced
    by nftables.

 -- Arturo Borrero Gonzalez <arturo@debian.org>  Wed,  04 Dec 2019 11:49:00 +0200

(press q to quit)

成功した気がする

iptables --version の応答は iptables v1.8.5 (nf_tables) これは...やりましたかねぇ!

回りくどい方法だったのかも?

今回自分の場合は「安定版(buster)にはおいてなかった、ちょっと先のバージョン(buster-backports)のパッケージが欲しかった」だけだったんですが、コレもしかすると debian.org とかの buster-backports とやらに繋いで、手動でパッケージを落としてインストールとかもできたんですかね?

linux初心者なので、どうやればよかったのかもわからなす...

https://packages.debian.org/search?keywords=iptables
から
https://packages.debian.org/buster-backports/iptables
を開いて「iptables のダウンロード」の項目を視認。
アーキテクチャに準じたファイルのURLが得られるけど、これを得てどうする?どこかに組み込む?
わからんち (・_・)

参考URL

linuxに慣れておらず、やっている事がしっかりと理解できなかったのですが
今回調べて記事を書くにあたり、かなり足掛かり・参考となりました

Qiita - [メモ] ラズパイ: Debianのbackportsを利用する