それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

AESの速度議論のためには種類のCPUで、AESの速度を測定する。- intel arm mips

AES がどれくらいの速度で扱えるかを測定したい。

openssl speed -multi $CORES aes-128-cbc sha256

実験してみた

まずはIntelのCPUで実験

> cat /proc/cpuinfo  |
model name  : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch invpcid_single ibrs ibpb stibp kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bugs        : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf
> openssl speed -multi 8 aes-128-cbc sha256
OpenSSL 1.1.0j  20 Nov 2018
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr)
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/x86_64-linux-gnu/engines-1.1\""
aes-128 cbc     359078.48k   430352.34k   446573.69k   423978.37k   465998.75k   493221.99k
sha256          224244.06k   536218.13k   945057.87k  1299140.74k  1215522.99k  1242332.35k

Raspi3 4コアで実験

> cat /proc/cpuinfo  | grep model
processor   : 3
model name  : ARMv7 Processor rev 4 (v7l)
BogoMIPS    : 38.40
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32

> openssl speed -multi 4 aes-128-cbc sha256
compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/arm-linux-gnueabihf/engines-1.1\""
aes-128 cbc     162479.43k   183362.99k   189770.67k   191614.29k   192888.83k   191987.71k
sha256           43623.56k   115694.68k   209662.38k   264529.58k   284770.30k   287719.42k

手元にあるルータでも試してみた。

root@tplinkc7v5:/etc/config# cat /proc/cpuinfo
system type     : Qualcomm Atheros QCA956X ver 1 rev 0
machine         : TP-LINK Archer C7 v5
cpu model       : MIPS 74Kc V5.0

root@tplinkc7v5:/etc/config# openssl speed  aes-128-cbc sha256
compiler: mips-openwrt-linux-musl-gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/target-mips_24kc_musl/usr/include -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/target-mips_24kc_musl/include -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl/usr/include -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl/include/fortify -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl/include -znow -zrelro -DOPENSSL_SMALL_FOOTPRINT -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -DOPENSSL_NO_ERR -DTERMIOS -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -iremap/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/build_dir/target-mips_24kc_musl/openssl-1.0.2p:openssl-1.0.2p -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/feeds/base/package/libs/openssl/include -ffunction-sections -fdata-sections -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      11853.28k    13028.85k    13314.53k    13352.39k    13424.46k
sha256            4376.05k     9761.24k    17090.33k    21060.47k    22263.52k

最近買ったJ5005のマシンでも試してみた。

cat /proc/cpuinfo 
processor   : 0
vendor_id   : GenuineIntel
model name  : Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz
stepping    : 1
microcode   : 0x28
cpu MHz     : 972.719
cache size  : 4096 KB

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid arch_capabilities
aes-128 cbc     247540.61k   270574.27k   276258.99k   618936.32k   625180.67k   623241.90k
sha256          357970.44k   917322.11k  1770737.49k  2298001.41k  2424143.87k  2547853.99k

まとめ

簡単に数字だけ拾ってみる

cpu aes-128 cbc 16byte
Intel(R) Core(TM) i7-6700 359078.48k
Intel(R) Pentium J5005 247540.61k
ARMv7 Processor rev 4 (v7l) 162479.43k
MIPS 74Kc V5.0 11853.28k

やっぱりPC用のIntelのCPUは段違いに早いっすね。AESとsha256などOpenVPNとかHTTPSとかをIntel/AMD以外のCPUで扱うのは無理がありそう

ルーターにOpenWRTやDD-WRTを突っ込んだとしてもOpenVPNなど暗号化通信のスループットは全く期待できないと思われる。

IPSecOpenVPNとかの暗号化をつかった通信を一般ご家庭で試すにはPCのCPUを使うのが一番いい。 Livaのマシン買ってきてLinuxルータを作るのがいいだろうな

GigaEther が2本ついてるマシン

関連記事

CPUのAES暗号化速度をCPU組込のaesサポートのありなしで測定する。 - それマグで!

参考資料

https://systemausfall.org/wikis/howto/AES-Performance

JetBrainssのコマンドライン launcher を何度も導入し直すのが面倒なのでスクリプト書いた

WebStorm やPycharm をコマンドから呼べるヤツ

コマンドラインからPycharmを起動できるスクリプトはもともとサポートされていますが。

f:id:takuya_1st:20190130223525p:plain

Toolbox を使うとパスが飛びまくる

Jetbrains toolbox を使っていると、PATHがぜんぜんもうダメになって使い物にならない。

たとえば、2019-01-30 現在の pycharm の場所はこんなのになってる。

 '/Users/takuya/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/183.5153.39/PyCharm.app/Contents'

はぁめんどくさいなぁ。アップデート来るたびにコマンドラインの起動スクリプトを作り直しになるう。

通常で使ってる分にはあんまり問題はないのだけれど。Toolboxを使って自動アップデートにするとコマンドの作成がうまくいかない。

自前で作ることにした。

ポイントは --args で引数のパスを渡すところ

gist.github.com

このファイルを保存して実行すれば大丈夫。

使い方

curl -L http://j.mp/2TkW4uf > pycharm 
pycharm /usr/local/bin

これでオッケ

phpstorm が良ければ

curl -L http://j.mp/2TkW4uf > phpstorm
phpstorm /usr/local/bin

webstorm も rubymine も同じ感じで行けそう

mac にlsusb をインストール

mac で lsbusb をつい叩いてしまう

takuya@macos~$ lsusb
-bash: lsusb: コマンドが見つかりません

あああ、もう。慣れって怖い

mac で同様のコマンドはないのかとおもったら。

教えてもらった。

出来た!

system_profiler SPUSBDataType

あとは、これをAliasにして

alias lsusb='system_profiler SPUSBDataType'

これで困らないね。でも表示が冗長なんだよなぁ。

あれ、brew に面白いものが

ip コマンドみたいに、ダメ元で検索かけたら出てきた。

brew install lsusb

なんと、bash で記述された根性スクリプトだった。コレは楽しい。

sshサーバーに ユーザー名&IPアドレスで制限を掛ける

ユーザーのssh のアクセス制限をIPアドレスで掛けたい。

IPアドレスからのパスワード・アクセスを許可したり、ユーザーごとに許可したりは、Match条件できる。

Match User apache
    PasswordAuthentication yes
Match Address 192.168.10.*
    PasswordAuthentication yes

上記のようにしたらできる。

特定のIPからの指定のユーザーだけを許可するのはどうするのか

結論から言うと、こう書くといい。

AllowUsers apache@172.10.0.0/16

この例だと、指定したIPからのみ、ユーザー名Apacheがログインできる。よく使いそうなユーザー名 www-data や apache などは /sbin/nologin で守ることもできるけど、どうしても使いたいなってときだけに、このようにすることで特定ユーザーの制限されたIPからのみに限定できる。

And条件などが使えないので、具体的には、このように書くしかないんですね。

大胆に、指定IPだけ、SSHを許可する

iptables でやれって話なんですが。うまく使えば、指定IPからだけのSSH接続を許可するっていう使い方ができる。

AllowUsers *@172.10.0.0/16

逆に、拒否するときとか

DenyUsers *@172.10.0.0/16

いちおうman には載ってるんだけど、結構悩んだのでメモしておく。

間違ってハイフン付きのファイル名を作ってしまって消せないときの対応

間違ってハイフンがついたファイルを作ってしまった。

[takuya@ki www]$ ll .
total 1313532
-rw-rw-r--   1 takuya takuya       2926 Dec 10 17:37 backup.php
-rw-rw-r--   1 takuya takuya   31806188 Dec 26 20:09 -C
drwxr-xr-x.  2 apache apache       4096 Jun 20  2018 cgi-bin

あかん、コレめんどくさいやつや。

これは出来ない。

こういうファイルを作ってしまうと、通常の操作では、ファイルを閲覧することが出来ない。

[takuya@ki www]$ ll  -C
ls: cannot access -C: No such file or directory

エスケープはうまく動かない。

いろいろ試してみたけど、すべてが ls のオプションとして解釈される。

[takuya@ki www]$ ll  \-C
[takuya@ki www]$ ll  \'-C'
[takuya@ki www]$ ll  '-C'

ぐぬぬ

現実的な解決方法

パスを指定する

[takuya@ki www]$ ll  ./-C

ハイフンをつなげる。

[takuya@ki www]$ ll -- -C

これらで解決することができる

nologin 指定されたユーザにsu したりする。無理ログイン

apache ユーザーで bash を起動する

apache ユーザーなど /sbin/nologin のユーザーでは suは出来ない。

[takuya@ki data]$ sudo su apache
This account is currently not available.

/etc/passwdを見てみる

するとログインできなくなっている。

apache:x:48:48:Apache:/var/www:/sbin/nologin

無理矢理にログインしてみる

要は、このユーザーでbashを起動すればいいのだから、こんな事ができる。

[takuya@ki data]$ sudo su -s /bin/bash apache
bash-4.1$ id
uid=48(apache) gid=48(apache) groups=48(apache)

sudo su するくらいなら sudo だけでもできる。

[takuya@ki data]$ sudo -u  apache  /bin/bash
bash-4.1$ id
uid=48(apache) gid=48(apache) groups=48(apache)

シェルを起動することはできる。

できるけど、あまり勧められた方法ではない。

連続してコマンドを起動しない限りは、シェルスクリプトファイルをつくってやりたいことを1つにまとめて起動するほうがいいと思う

sudo -u apache /path/to/script

tcpdumpでDHCPv6の近傍探索やリレーのパケットを見る

dhcpv6 を見たい。

tcpdump でやるには次のようにする。

tcpdump -n -vv ‘(udp port 546 or 547) or icmp6’

ここで、UDP の 546, 547 は、v6のDHCPv6で使われる。

リレーエージェントが、DHCPv6 をリレーするのに、547 あてに送信する、送信元は546 だったか。

オプションの -n は逆引きをさせないようにするもので、まぁV6のパケットとアドレスを見たいときに使うだろうし、つけたほうがいいかなって。

参考資料

man tcpdump

MacのFinderでカットペース(ファイルの移動)をする

Mac のファインダでカットペーストをしたい

コピーペーストはできるんだろうけど、カットペーストはちょっとコツが必要。

option + command + V:移動:クリップボードに配置したファイルを、元の場所から現在の場所に移動します。

コピーして貼り付けるときに、移動して貼り付けになる。 先にカットしないところがポイント。

参考資料

support.apple.com

certbotの更新でCloudflareプラグインを使ってDNSの認証を楽にする

目的と背景

certbotワイルドカードについて

2018 年からCertbotワイルドカード発行が可能になっている。

ワイルドカードを使うことで、サブドメインをまるっとTLS化できて便利。

ワイルドカードの証明書の作り方

ワイルドカードのやりかたは以前書きました。 http://takuya-1st.hatenablog.jp/entry/2018/10/25/163040

前回、作成した証明書から90日くらい経過して、更新が必要になったので、さらなる進化を目指します。

今回やること:DNSのTXT認証の省力化

ワイルドカード証明書の発行には、TXTレコードの書き換えが必要です。

これを各API経由で自動化することができます。

準備するもの

今回は、これに加えDebianのAPTのCertbotと競合しないようにVirtualEnvを使うことにしました。

準備

最新版のCertbotを持ってきます。

git clone https://github.com/certbot/certbot
cd certbot

virtualenv 環境に入ります。

virtualenv certbot-test
source ./certbot-test/bin/activate

もしvirtualenv がない場合は pip でインストールします。 pip install --upgrade pip && pip install virtualenv

わたしは pyenv 環境で作っているのでpyenv コマンドとvirtualenvを使っています。

acme をインストール

cd acme
python setup.py install
cd ..

certbot をインストール

cd certbot
python setup.py install
cd ..

dns プラグインをインストール。今回は cloudflare を採用します。

cd certbot-dns-cloudflare
python setup.py install
cd ..

これで、Certbot側の準備は終了です。

api キーを用意します。

Cloudflareにログインし、プロフィールを表示、Global API Key を閲覧しコピーします。

api キーを保存しました。

/etc/letsencrypt/cloudflareapi.cfg

dns_cloudflare_email =  takuya**************@gmail.com
dns_cloudflare_api_key = *********************

キーが不用意に閲覧されなようパーミッションを設定しておきます。

sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

これで、APIとキーの準備は終わりです。

起動テストを行います。

mydomain=example.com
sudo /home/takuya/certbot/certbot-test/bin/certbot  \
  certonly \
 -n --dry-run \
 --cert-name $mydomain \
 --dns-cloudflare \
 --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \
 --server https://acme-v02.api.letsencrypt.org/directory \
  -d "*.$mydomain"  \
  -d $mydomain

Certbot を使ってワイルドカード証明書を発行します。

mydomain=example.com
sudo $( which certbot )  \
  certonly \
  --cert-name $mydomain \
  --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \
  --server https://acme-v02.api.letsencrypt.org/directory \
   -d "*.$mydomain" \
   -d $mydomain

最後にWEBサーバーを再起動して終了です

sudo service nginx restart

複数枚を作るときは

次回以降は次のようにすると早いですね

cd ~/certbot
git pull
virtualenv certbot-test
source ./certbot-test/bin/activate
suod ./certbot-test/bin/certbot certonly 

まとめ

ワイルドカード証明書は管理コストが減って便利。

ワイルドカード証明書

こんかいは、Virtualenvを使ったのでsystemd に登録される自動更新のプログラムが使えないので、数ヶ月ごとに手作業で実行する必要はある。

この辺はそのうちAptレポジトリに含まれるCertbotが更新されるであろうから大丈夫だと思う。

ワイルドカードの証明書を使うのもいいけど、自動更新もあるわけだしランダムなドメイン名を無数に使わないなら、ワイルドカードは使わないで、Certbot-autoで自動更新のほうがいいかもしれない。

複数のドメインの証明書を1枚にすると同時にワイルドカードもまとめられたら嬉しい。試してみたい。

2019-03-27

記述追加

参考資料

ipコマンドで、ifconfig down/up やifdown/ifup 的な操作を行う方法

インターフェースのリンクアップとリンクダウン

iproute2 以前なら、何も考えずに、次のようなコマンドを打ち込んでいたところではある。

ifconfig eth0 down &&  ifconfig eth0 up

ip コマンドになって一番困ったのがこれ。

NICを切断と接続をipコマンドでやる

ip link set eth0 down 
ip link set eth0 up

これで、ネットワークのインターフェースを指定した再起動ができます。

省略形も使えます。

ip l set eth0 up

link は l に省略できます。 ip a が ip addr の略なのと同じです。

dhcpを更新したいだけなら

sudo dhclient -v -r eth0

なととしてもいいわけです。

ip コマンド地味に困る

iproute2 で検索したいので、みんなip コマンドじゃなくて iproute2 で記事書いてほしい

nmcli でもいいんだろうけど、あっちはMacのnetworksetup みたいに接続名で識別するからめんどくさそう.

takuya@:~$ nmcli connection show '有線接続 1'
takuya@:~$ nmcli connection down '有線接続 1'
takuya@:~$ nmcli connection up '有線接続 1'

nmcli は更に使いにくいな。。。ifconfig で良かったんじゃ・・・感

参考資料

Linux Force DHCP Client (dhclient) to Renew IP Address - nixCraft

tcpdump で ipv6 のパケットを見る

tcpdump のパケットで、v6だけにフィルタする。

tcpdump -v ip6

ip6 と書きます。 ipv6 だけど、ipv6とは書きません。

ping6のように、tcpdumpipv6 専用コマンド tcpdump6 があるわけででもないです。

ubuntu(gnome3) のキーリピートを変更する

ubuntu のキーリピートが遅い

設定は、アクセシビリティ→ タイピング。(( まぁUbuntuのことだから、 18.04 ではこうだけど、すぐ場所変わるんだろうけど)

ちょっとわかりにくいUIだけど、これで調整する

f:id:takuya_1st:20190108021907p:plain

上部はウエイト

上部は、キーリピートが開始するまでの時間。つまりリピートウエイト

左に行くほど時間間隔が小さい、つまり左ほど早い

下部はリピート間隔

下部は、キーリピートが発生するまでの時間。つまりリピート間隔

左に行くほど時間間隔が小さい、つまり左ほど早い。したがって左に行くほど入力回数が多くリピートが多い

右に行くほど、時間間隔が大きい。つまり右ほど遅い。したがって右に行くほど入力回数が少ないキーリピートが少ない。

わかりにくいUI

左に行くほど大きいと思いがちなので、一瞬混乱する。→に行くほど時間が大きい。

つまり「右=遅い」

f:id:takuya_1st:20190108022837p:plain

ubuntu 18.x なので

たぶんGNOMEのデスクトップでも同様だと思います。

2019-01-17

DebianGnome で確認した。同じでした。

f:id:takuya_1st:20190117152438p:plain

UbuntuのLive CD/DVD/USBで使用中にaptでソフトウェアをインストール

Live DVDで使用中にaptでソフトウェアをインストール

UbuntuインストーラーのUSBディスクで起動して、なにかやりたときにどうするか。

たとえば、SSD/HDDをリカバリしたいとか、ちょっとつかいたときにコマンドがなくて困ったりする。

Ubuntu/Debian などをUSBディスクにインストールしてもっておけばいいんだろうけど、そこまではめんどくさいし、とりあえずDVDやインストールUSB一つで済ませたいよね。

ddrescue がない

ddrescue がUbuntuのインストールメディアには搭載されてないのでそれをインストールしたい。

そうしておけば、HDDのコピーが行なえますよね。

apt install を可能にする。

ターミナルを開いて、universeを有効にしてあげると

sudo add-apt-repository universe

これで準備が完了

たとえばddrescue をいれる。

sudo add-apt-repository universe
sudo apt install gddrescue 

コマンドを覚えておけば、ubuntu のインストールUSBをひとつ作っておくだけで、ちょっとしたメンテ作業も楽なるに違いない。

参考資料

macのソフトウェアをアップロードをCLI(コマンド)から実行する。

ソフトウェアアップデートが必要なんですが、AppStore開くのがめんどくさい

takuya@~$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

そういえば、しばらくソフトウェアの更新をしてないと思いました。でもapt に慣れきった身体には、Mac App Storeを開いて更新するのがめんどくさいんです。

softwareupdateコマンドがあった。

コマンドから出来ないのかなと思って調べてたら、こんなものを見つけた

takuya@~$ softwareupdate -i -r
Software Update Tool

Finding available software

Downloading Safari
Downloading セキュリティアップデート2018-003

AppStoreの表示と一致するので安心。

f:id:takuya_1st:20181213170505p:plain

参考資料

https://stackoverflow.com/questions/34617452/how-to-update-xcode-from-command-line

aria2c でダウンロードの楽をする。

サーバーにごめんなさいしながら使う。aria2c 通称 aria または aria2

aria2c で同時多重ダウンロードをする。 物理回線以上には早くならないけど、回線の限界まで速度を上げる。

私は、単なるダウンローダー代わりに使っている

ダウンローダートして使う。

なにもオプションつけないと、単なる curl -LJO と同じ。

takuya@Desktop$ aria2c  https://example.com/out.50MB.img

12/06 16:38:14 [NOTICE] Downloading 1 item(s)

12/06 16:38:15 [NOTICE] Allocating disk space. Use --file-allocation=none to disable it. See --file-allocation option in man page for more details.
[#378d63 5.9MiB/50MiB(11%) CN:1 DL:167KiB ETA:4m28s]

適当にレジュームできる機能が好き

Ctrl-C で接続を止めたり、不意に再起動しちゃったりとかの場合でも、「同じマンドを再度実行すると、レジュームされる。

Status Legend:
(INPR):download in-progress.

aria2 will resume download if the transfer is restarted.
If there are any errors, then see the log file. See '-l' option in help/man page for details.

TCP セッションを2本でダウンロード

takuya@Desktop$ aria2c  -x2 https://example.com/out.50MB.img

2本でダウンロードするので1本より早くなる。

速度は期待しないほうがいいかも

TCPの帯域を専有すると少し早くなりますね。かといって、本数を大きくしすぎると却って遅くなる気がする。

企業が展開するミラーサーバとかCDNとか強いサーバー相手なら遠慮なく言ってもいいと思うけど、ボランタリーベースで行われてるサーバーに深かけるの良くない。

インストール

sudo apt install aria2

2019-08-27

追記

参考資料

次世代ダウンロードツールAria2とWEB-UIのセットアップ - Qiita

日常から使えるUnix系OS業務効率up技 - Qiita