👨🏻💻
RPKI-Client Validatorのインストール
RPKI-Clientは、OpenBSDプロジェクトによるルーティング・セキュリティの取り組みです。RPKI-Clientを使って、Validator/Cacheを構築する方法です。
1. Debian 12のインストール
プラットフォームは、VMware Fusion上のDebian 12を使うことにします。デフォルトのインストールから変更した点は次の通りです。
- キャッシュは小さなファイルがたくさん作られるため、inodeをかなり消費します。
/usr/local
を別ファイルシステムとし、ファイルシステムタイプを'news'にして、inodeを増やしました。
2. 開発環境の構築
# apt install curl wget openssl rsync build-essential git autoconf libtool automake libssl-dev libbsd-dev gawk libexpat1-dev libtlsh-dev net-tools
3. Zlibのインストール
# cd /usr/local/src
# curl -O https://www.zlib.net/zlib-1.3.1.tar.gz
# tar xvfz zlib-1.3.1.tar.gz
# cd zlib-1.3.1
# ./configure
# make
# make install
4. libretlsのインストール
# cd /usr/local/src
# curl -O https://causal.agency/libretls/libretls-3.8.1.tar.gz
# tar xvfz libretls-3.8.1.tar.gz
# cd libretls-3.8.1
# ./configure
# make check
# make install
5. RPKI Client用のグループとユーザの作成
# groupadd _rpki-client
# useradd -g _rpki-client -s /sbin/nologin -d /nonexistent -c 'rpki-client user' _rpki-client
6. RPKI-Clientのインストール
# cd /usr/local/src
# curl -O https://www.ftp.ne.jp/pub/OpenBSD/rpki-client/rpki-client-8.9.tar.gz
# tar xvfz rpki-client-8.9.tar.gz
# cd rpki-client-8.9
# ./configure
# make check
# make install
7. ARINのTAL(Trust Anchor Locator)ファイルをダウンロードする
cd /usr/local/etc/rpki
curl -O https://www.arin.net/resources/manage/rpki/arin.tal
注: 進める前に、必ずARIN Relying Party Agreement (https://www.arin.net/resources/manage/rpki/rpa.pdf)を読むこと。
8. RPKIキャッシュを同期
環境にもよるが、数分から十数分かかります。
# rpki-client -c -v
rpki-client: ta/lacnic: pulling from https://rrdp.lacnic.net/ta/rta-lacnic-rpki.cer
rpki-client: ta/apnic: pulling from https://rpki.apnic.net/repository/apnic-rpki-root-iana-origin.cer
rpki-client: ta/ripe: pulling from https://rpki.ripe.net/ta/ripe-ncc-ta.cer
rpki-client: ta/arin: pulling from https://rrdp.arin.net/arin-rpki-ta.cer
rpki-client: ta/afrinic: pulling from https://rpki.afrinic.net/repository/AfriNIC.cer
:
Cleanup: removed 0 files, 69786 directories
Repository cleanup: kept 25989 and removed 32 superfluous files
VRP Entries: 510620 (498333 unique)
VAP Entries: 49 (49 unique)
注: バリデーションに失敗したとか、その他のエラーメッセージが表示されることがあります。これらは無視してかまいません。
キャッシュは次の通り。
# cd /usr/local/var/cache/rpki-client
# ls
0.sb rpki.luys.cloud
ca.nat.moe rpki.multacom.com
ca.rg.net rpki.nap.re
chloe.sobornost.net rpki.netiface.net
cloudie-repo.rpki.app rpki.owl.net
dev.tw rpki.pedjoeang.group
krill.accuristechnologies.ca rpki.qs.nu
krill.rayhaan.net rpki.rand.apnic.net
krill.stonham.info rpki-repo.registro.br
pub.krill.ausra.cloud rpki-repository.haruue.net
pub.rpki.win rpki-repository.nic.ad.jp
repo.kagl.me rpki.ripe.net
repo-rpki.idnic.net rpki.roa.net
repository.lacnic.net rpki-rps.arin.net
r.magellan.ipxo.com rpki-rsync.mnihyc.com
rov-measurements.nlnetlabs.net rpki-rsync.us-east-2.amazonaws.com
rpki-01.pdxnet.uk rpki.sailx.co
rpki1.rpki-test.sit.fraunhofer.de rpki.services.vm.n1.i.bm-x0.w420.net
rpki.admin.freerangecloud.com rpki.sub.apnic.net
rpki.afrinic.net rpki.tools.westconnect.ca
rpki.akrn.net rpki.xindi.eu
rpki.apernet.io rpki.zappiehost.com
rpki.apnic.net rsync.krill.cloud
rpki.arin.net rsync.paas.rpki.ripe.net
rpki.caramelfox.net rsync.roa.tohunet.com:3873
rpkica.twnic.tw rsync.rp.ki
rpki.cc rsync.rpki.tianhai.link
rpki.cnnic.cn sakuya.nat.moe
rpki.folf.systems ta
rpki.komorebi.network
同時に、検証済みのROAペイロードがCSV形式に保存されます。
# cd /usr/local/var/db/rpki-client/
# ls
csv
# grep AS2515, csv
AS2515,103.131.194.0/23,24,apnic,1705206585
AS2515,192.41.192.0/24,24,apnic,1704936620
AS2515,202.12.30.0/24,32,apnic,1704936620
AS2515,202.12.30.0/24,24,apnic,1704936620
AS2515,211.120.240.0/21,24,apnic,1705206585
AS2515,2001:c40::/32,48,apnic,1705206585
AS2515,2001:dc2::/32,48,apnic,1705206585
AS2515,2001:fa0::/32,48,apnic,1705206585
AS番号(ASN)、IPプレフィックス、Maxlen、トラスト・アンカー、有効期限のリストCSVが表示されます。
RTR(RPKI-to-Router)プロトコル[RFC8210]を介して、検証済みのキャッシュをBGPルータに送信するには、GoRTRなどのRTRサーバ・ソフトウェアや、BIRDまたはOpenBGPを使用します。
その他
- Manifest
# rpki-client -f is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
File: is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
Hash identifier: 0EBiA4yH8ZpgWAzYo+kJabJ6Av/5rEyJ9yXZSn25fg4=
Subject key identifier: 40:A4:5A:97:3E:2E:07:1A:BE:34:97:6B:57:2C:37:B6:A4:43:09:BE
Authority key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
Certificate issuer: /CN=8ACDAB1E1EA633BA8AD18A2ACB72360E9280C4B6
Certificate serial: 3C
Authority info access: rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
Subject info access: rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
Manifest number: 0106
Signing time: Mon 01 Jan 2024 01:30:20 +0000
Manifest this update: Mon 01 Jan 2024 01:30:20 +0000
Manifest next update: Thu 11 Jan 2024 01:30:20 +0000
Files and hashes: 1: LqM5S1L3MvQEksB1Eh-fRZuvjh4.roa (hash: uBnDyJDBDF8I3MpaF+55rjXm7yWds5qh5LP7K5JusoA=)
2: dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa (hash: lA0wLC0jTcTcH6nMT/ijVvKTWt4LHiYTaB35dXj1Fdg=)
3: is2rHh6mM7qK0Yoqy3I2DpKAxLY.crl (hash: 5zopkBa+qq5S023a87BeeGTFLfWuFS9U5j89gaslR1w=)
Validation: OK
- CRL
# rpki-client -f is2rHh6mM7qK0Yoqy3I2DpKAxLY.crl
File: is2rHh6mM7qK0Yoqy3I2DpKAxLY.crl
Hash identifier: 5zopkBa+qq5S023a87BeeGTFLfWuFS9U5j89gaslR1w=
Authority key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
CRL issuer: /CN=8ACDAB1E1EA633BA8AD18A2ACB72360E9280C4B6
CRL serial number: 0106
CRL last update: Mon 01 Jan 2024 01:30:20 +0000
CRL next update: Thu 11 Jan 2024 01:30:20 +0000
Revoked Certificates:
Serial: 30 Revocation Date: Mon 01 Jan 2024 01:30:20 +0000
Validation: N/A
- ROA
$ rpki-client -f dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa
File: dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa
Hash identifier: lA0wLC0jTcTcH6nMT/ijVvKTWt4LHiYTaB35dXj1Fdg=
Subject key identifier: 74:11:1B:B4:BB:3D:71:89:AC:31:CE:88:CC:FC:BC:3C:94:79:9C:F8
Certificate issuer: /CN=8ACDAB1E1EA633BA8AD18A2ACB72360E9280C4B6
Certificate serial: 39
Authority key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
Authority info access: rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
Subject info access: rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/dBEbtLs9cYmsMc6IzPy8PJR5nPg.roa
Signing time: Sun 01 Oct 2023 01:29:00 +0000
ROA not before: Sun 01 Oct 2023 01:29:00 +0000
ROA not after: Sat 14 Sep 2024 01:30:03 +0000
asID: 2515
IP address blocks: 202.12.30.0/24 maxlen: 32
Validation: OK
- BGPsec Router Key
# rpki-client -f is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
File: is2rHh6mM7qK0Yoqy3I2DpKAxLY.cer
Hash identifier: d5KUen0iUHg7iBlSwKcB5fxXVsJW774sJFLOvitNSMY=
Subject key identifier: 8A:CD:AB:1E:1E:A6:33:BA:8A:D1:8A:2A:CB:72:36:0E:92:80:C4:B6
Authority key identifier: BA:44:12:B3:5F:5A:8A:71:47:BF:C6:67:B5:9B:52:0D:AA:C7:DA:8F
Certificate issuer: /CN=A91A73810000/serialNumber=BA4412B35F5A8A7147BFC667B59B520DAAC7DA8F
Certificate serial: 28B2
Authority info access: rsync://rpki.apnic.net/repository/B527EF581D6611E2BB468F7C72FD1FF2/ukQSs19ainFHv8ZntZtSDarH2o8.cer
Manifest: rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/is2rHh6mM7qK0Yoqy3I2DpKAxLY.mft
caRepository: rsync://rpki-repository.nic.ad.jp/ap/A91A73810000/1003/
Notify URL: https://rpki-repository.nic.ad.jp/rrdp/ap/notification.xml
Certificate not before: Fri 15 Dec 2023 01:34:39 +0000
Certificate not after: Sat 14 Dec 2024 01:30:03 +0000
Subordinate resources: IP: 202.12.30.0/24
Validation: OK
変更履歴
- 2024.1.8
- 2024.1.18
- 2024.2.23
Discussion