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)の内容がワリと言及しているページによって異なるんですが、どうやら単純にミラーサイトとか日本サーバーとかそういうのが沢山あるだけっぽいので、そこまで神経質にならなくても良さそうです。
今回追加(有効)にする行はこちら
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
を実行すると下記エラーログが。
どうやら取得先を記載しただけでは「信頼に欠ける」として、まだ弾かれる模様。
ログに出ているキーとやらを 「ここ信頼して💕」 と登録してやると良いのだとか
下記でいう所の 04EE7237B7D453EC と 648ACFD622F3D138 がこれに相当
▼ 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
での確認となる模様
-
平時
$ sudo apt-cache policy iptables
iptables:
Installed: 1.8.2-4
Candidate: 1.8.2-4
Version table:
1.8.5-3~bpo10+1 100
100 http://deb.debian.org/debian buster-backports/main armhf Packages
*** 1.8.2-4 500
500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
100 /var/lib/dpkg/status -
buster-backports の場合
$ sudo apt-get install -t buster-backports iptables iptables:
Installed: 1.8.2-4
Candidate: 1.8.5-3~bpo10+1
Version table:
1.8.5-3~bpo10+1 990
990 http://deb.debian.org/debian buster-backports/main armhf Packages
*** 1.8.2-4 500
500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
100 /var/lib/dpkg/status
改めて、対象パッケージをインストール
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に慣れておらず、やっている事がしっかりと理解できなかったのですが
今回調べて記事を書くにあたり、かなり足掛かり・参考となりました