let’s encryptの定期更新

Arch Linuxでは、標準ではcronがインストールされていない。
cronieまたはfcronをインストールすればよいが、標準にしたがって、timerで、let’s encryptの定期更新。

# cd /etc/systemd/system
# vi certbot.timer
[Unit]
Description=Run certbot on 2nd day bimonthly
[Timer]
OnCalendar=*-01,03,05,07,09,11-02 03:00:00
RandomizedDelaySec=60min
Persistent=true
[Install]
WantedBy=timers.target

# vi certbot.service
[Unit]
Description=bimonthly certbot
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot renew –quiet –agree-tos –max-log-backups 9

# systemctl start certbot.timer
# systemctl status certbot.timer
# systemctl enable certbot.timer
# systemctl list-timers –all

ログは、logrotateではなく自前で管理しており、 /var/log/letsencrypt/に1000までログができるので、オプションで制限する。
ヘルプ表示は、certbot -h all。
強制実行で確認する。
# systemctl start certbot.service

3か月前には更新できたcertbot renewで以下のエラーが発生する。
Attempting to renew cert (domain.name.com ) from /etc/letsencrypt/renewal/domain.name.com.conf produced an unexpected error: Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/domain.name.com/fullchain.pem (failure)

解決のために、/etc/httpd/conf/extra/httpd-vhosts.confを編集して、以下を追加。
<VirtualHost:80>
ServerName domain.name.com
</VirtualHost>

/etc/httpd/conf/httpd.confを編集して、rewriteモジュールをコメントアウト。
LoadModule rewrite_module modules/mod_rewrite.so

# httpd -t ; syntax check
# systemctl restart httpd
# certbot renew –dry-run; 動作確認
# stemctl daemon-reload; ファイルを修正した場合

いつの間にか期限前30日だと更新されない設定になったので、2か月ごとの更新だと期限切れになるので、強制更新に変更。
/etc/systemd/system/certbot.serviceを変更。
ExecStart=/usr/bin/certbot renew –force-renewal –quiet –agree-tos –max-log-backups 9

Yahooニュースの映像がみれない

debian 9.11のfirefoxで、Yahooニュースの埋め込み映像が表示されない。
エラーコード:1001200が表示されている。
ブラウザの識別の問題であるようなので、extensionのUser-Agnet switcher and Mangerをインストールして、OSをwindows7に変更すると再生された。

SeaMonkey version 2.49.4だと、適切なUser-Agent Switcherがないので、firefox系なので手動で設定できる。
about:config
preference(string)の作成。general.useragent.override
値を適切に選べばよい。OSの変更が必要。
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0


日本語とサウンド

x-windowsは、pacman -S xfce4で手っ取り早く導入。
機動は、startxfce4でOK。
ブラウザは、pacman -S midori flashpluginでやってみたが、ときに強制終了するので、
pacman -S seamonkey。
日本語フォントは,pacman -S otf-ipafontで簡単。
問題は,日本語入力の選択。インプットメソッドは,kinput2, SCIM, ibus, Fcitxと変遷してきたようだ。
いまは,Fcitxが素直な選択と思われるが,中国産なのでなんとなくいや。
ウテナとアンシーが忘れられないので、昔ながらのuimにしてみる。
まだ公式リポジトリにあるので、pacman -S uim anthyでよい。
ターミナルで、uim-toolbar-gtk-systray &を動かすと、言語ツールバーが起動するので、Preference-Global settings-Input method deploymentでDefault input methodでanthy-utf8を選択しておく。
日本語のオンとオフはShift+Spaceなので、そのまま使える。
Spaceで変換、Enterで確定、Escapeで取消、Ctrl+pで前候補。
次回以降もツールバーが必要であれば、自動起動のために、Applications – Settings – Session and StartupのApplicaiton AutostartからAddで設定しておく。
uim-fep -u anthyでコンソールでも使えるはずだが、フレームバッファのターミナルが公式ではないようなので、残念。
つぎにサウンド。pacman -S alsa-utils導入後、alsamixerを起動して、F6で確認するとデフォルトがHDMIになってるため。cat /proc/asound/modulesで確認すると、HDMIもPCHも同じモジュールを使用しているので、順番を入れ替える
echo options snd_hda_intel index=1,0 > /etc/modprobe.d/alsa-base.conf
再起動したら、音が出た。
念のため、cat /proc/asound/cardsで確認したら、alsamixerで音量調節。
alsactl storeで保存
pacman -S xarchiverは必要。
Applications-Settings-Power Manegerで、Status notificationsとSystem tray iconをONにしておく。
Web browserを複数インストールした時は、Applications-Settings-Preferred Applicationsで選んでおくと、Panelで起動するものを選択できる。
pacman -S mousepadでdefault text editorも。

“日本語とサウンド” の続きを読む

Calibre

これを使うと電子書籍の形式変換ができる。感激。
Welcome Wizardで言語はJapaneseを選んでおかないと、日本語書籍を取り込んだときのフォルダ名やファイル名がわかりにくくなる。
本を変換するときに、ページ設定の出力プロファイルをTabletにしておかないと、画面がリサイズされて、汚なくなってしまう。
AZW3からmobiの変換で、Rasterizing SVG imagesでPythonがMemoryErrorを起こす場合は、画面サイズが最大のiPad 3 (1536×2048)を選択し、サイズを制限する。ただし、図の縦横比が変わってしまうことがあるので、確認が必要。

PDF出力で、出力プロファイルに設定された画面サイズを使用するを選らぶ。PDF出力の余白を0にしたほうがよい。
PDF出力だと、ファイルサイズが倍程度に増えてしまう。

Xfce4のmedia player

Paroleが良い感じだっが、動画によって、MPEG-2 System Stream demuxerやITU H.264 decoderなどを要求されて再生できない。
別のプレイヤーを検討したが、Vlcとmplayerはなぜか再生できない。
結局、MPVをインストールした。
コントロールが、キーボードなのが分かりにくいが、なれると使いやすい。
ボリューム(音量)は、0と9。ビデオサイズは、alt+2で倍。再生速度の調整は、[]。
https://mpv.io/manual/master/#interactive-control

# vi /etc/mpv/mpv.conf
volume-max=300
上限を簡単に設定出きるので便利。

shadowsocks-libev

shadowsocksのインストールは簡単だが、obfsを使えない。shadowsocksRは標準パッケージがない。
libev+simple-obfsに挑戦。

# pacman -S shadowsocks-libev simple-obfs

サービスファイルを作成
# cat > /etc/systemd/system/shadowsocks-libev.service
[Unit]
Description=Shadowsocks-libev Default Server Service
Documentation=man:shadowsocks-libev(8)
After=network.target
[Service]
Type=simpleEnvironment
File=/etc/sysconfig/shadowsocks-libev
User=nobody
Group=nobody
LimitNOFILE=32768
ExecStart=/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target

設定ファイルを作成
# mkdir /etc/shadowsocks
# cat > /etc/shadowsocks-libev/config.json
{
“server”:”0.0.0.0″,
“server_port”:8388,
“local_port”:1080,
“password”:”passpass”,
“timeout”:300,
“method”:”chacha20-ietf”,
“plugin”: “obfs-server”,
“plugin_opts”: “obfs=tls”
}

サービスファイルを修正したら、リロード
# systemctl daemon-reload
# systemctl start shadowsocks-libev
# systemctl enable shadowsocks-libev

アンドロイドのクライアントをインストール
Shadowsocks offered by Max Lv
Simple Obfuscation offered by Max Lv

linuxのクライアントでは、ss-localがsocks5 proxyとなる。
# ss-local -c config.json -v
設定は、サーバーとほぼ同じでよいが、”plugin”: “obfs-local”とプラグインを変える。
seamonkeyのEdit/Preference/Advances/Proxies/を開き、
Manual poxy configurationを選び、Advancedを開き、
Socks Proxy: localhost, Port: 1080を入力し、
Socks v5とUse for resolving hostnameを選ぶ。

ssh over shadowsocksの場合は、ss-tunnelを使ってポートフォワード。
# ss-tunnel -c config.josn -v -L server.com:22
# ssh -p 1080 user@localhost
複数のサーバと接続するとサーバ情報が一致しないのでエラーとなり接続できない。~/.ssh/known_hostsの該当するサーバを削除するか、ssh -o ‘StrictHostKeyChecking no’で接続する。

ブラウザとsshだけならこれでよいが、本格的に使うなら、ss-redirとiptablesで設定が必要。

無線LAN on netctl

upgradeのために、パッケージをアンインストールしてしまったので、再設定。
pacman -S wireless_tools
pacman -S netctl
wifi-menu
これで接続OK
以前のnetcfgパッケージがnetctlに置換されており、さらに簡単になった。

wireless_toolsはiwconfigを使用しなければ不要か。
# netctl list
# netctl-auto list
# systemctl enable netctl-auto@wlp3s0
# journalctl -b -u netctl-auto@wlp3s0
起動時に、a start job is running for networkingが表示されたので、netctl-autoをdisableしたのちに、再度enableにすると改善した。
起動直後は、まだwifiが接続していないことがある。
dhcp_envoption 213: Operation not supported

Google BBRを使ってみる

Googleの新しいTCP高速化アルゴリズムBBR(Bottleneck Bandwidth and Round-trip propagation time)を使ってみる。
カーネルモジュールがあるので、ロードすれば、利用できる。

# sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = cubic
# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic
# zless /proc/config.gz | grep -i bbr
CONFIG_TCP_CONG_BBR=m
# modprobe tcp_bbr
# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr
# sysctl net.ipv4.tcp_congestion_control=bbr
sysctl net.ipv4.tcp_congestion_control=bbr

これで、問題なければ、設定ファイルを変更する。

#echo tcp_bbr > /etc/modules-load.d/net.conf
#echo net.ipv4.tcp_congestion_control=bbr > /etc/sysctl.d/net.conf

https://fast.com/ja/で計測すると、うそかほんとか、回線速度が10倍になった。

ubuntu 18.04でも同様の設定を追加した。
/etc/modules-load.d/modules.conf
/etc/sysctl.d/99-sysctl.conf
サーバーの回線制限のためか、残念ながら改善はなかった。

Shadowsocksr

スクリプトの使用で簡単にインストールできる。

# sudo -i
# wget –no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh && chmod +x shadowsocks-all.sh && ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

# ufw allow ポート
Altusを使用しているので、サーバだけでなく、グローバルIP側のFWも開放する。

# /etc/init.d/shadowsocks-r status
# tail /var/log/shadowsocksr.log

# ss -tulp
listenしているプロセスを表示

バージョンは3.2.2で、プロトコルにauth_chainを選ぶとエラーになる。暗号もnoneだとエラーになる。

OpenVPN

Arch LinuxのVPSにVPN serverを構築して、VPN Proxyを自前でつくった。
SoftEtherも構築が簡単そうで、スループットも期待できそうだが、pacmanで管理できないパッケージは、Arch Linuxらしくないと考えてあきらめた。
公式 Arch リポジトリにあるVPNのパッケージは、OpenVPNとStrongSwanしかないので、資料がそろっているOpenVPNを選択した。
pacman -S openvpn easy-rsa
本来は、別に認証局が必要だが、easy-rsaを使って、サーバで一気に作成。
パスフレーズは入力が必要だが、Common Nameの入力はENTERで省略できる。
cd /etc/easy-rsa
easyrsa init-pki
easyrsa biuild-ca
easyrsa gen-dh
openvpn –genkey –secret ./pki/ta.key
easyrsa build-server-full server nopass
easyrsa build-client-full client nopass

後は作成したファイルをサーバとクライアントのディレクトリにコピー。
また、サーバの設定ファイルもコピーする。
mv pki/dh.pem pki/dh2048.pem
cp ca.crt ta.key dh.pem private/server.key issued/server.crt /etc/openvpn/server
cp ca.crt ta.key private/client.key issued/client.crt /etc/openvpn/client

設定ファイルをルーティング方式に設定して、起動設定。

cd /etc/openvpn/server
cp /usr/share/openvpn/examples/server.conf ./srv.conf
vi srv.conf
systemctl start openvpn-server@srv
systemctl enable openvpn-server@srv

/etc/open/vpn/server/srv.confの設定例

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push “redirect-gateway def1 bypass-dhcp”
push “dhcp-option DNS 8.8.8.8”
push “dhcp-option DNS 8.8.4.4”
duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0 # This file is secret
comp-lzo adaptive
push “comp-lzo yes”
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/status.log
log /var/log/openvpn/vpn.log
verb 4
mute 20
explicit-exit-notify 1

/etc/iptables/iptables.rulesの設定に以下を加える。
iptables -A INPUT -p udp -m udp –dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -t nat -A INPUT -p udp -m udp –dport 1194 -j ACCEPT

systemctl reload iptables
これで、サーバの設定は終了。

andoroidのクライアントは、OpenVPN ConnectをPlayストアからインストール。
その後は、証明書と鍵をインラインで記載したoovpnファイルを読み込ませて接続できる。
ovpn fileの例
インライン作成は,, , , のタグで囲む。
tls-authディレクティブの代わりに,key-direction 1を記載する。

client
dev tun
proto udp
remote domain.name.com 1194

resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verb 3
#tls-auth
key-direction 1
mute 10

—–BEGIN CERTIFICATE—–
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
—–END CERTIFICATE—–

—–BEGIN CERTIFICATE—–
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
—–END CERTIFICATE—–

—–BEGIN PRIVATE KEY—–
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
—–END PRIVATE KEY—–

—–BEGIN OpenVPN Static key V1—–
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
—–END OpenVPN Static key V1—–

これでよいのだが、注意として,Chromeのdata savingオプションはオフにしておくこと。
そうしないと、IPがgoogle USAのIPに固定されてしまうので,VPN proxyの意味がない。
また,Playストアのregion情報は起動時しないと更新されないようなので,
VPNを接続した後に,設定!アプリで、Playストアを一度Force stopしてから、再起動する。

暗号のdefaultはbf-cbcで非推奨だが、接続後にaes-256-gcmにアップグレードされる。
# openvpn -show-ciphers

statusとlogは、標準の/etc/openvpn/severから、/var/log/openvpnに移す。ファイル名は、systemd-escapeで、エスケープ処理されているようなので、/の代わりに-が使用できる。

android clientでは、fragment未サポート

2019/10/13
標準の1194 udpの場合、中国から繋がりにくい。TLS errorが起こっているので、great firewallの影響か。ポートを変更したら改善した。