きっかけは Qiita のこの記事を読んで。
cf. 7年間使ってきたWordPressを捨ててContentful+Gatsby+Netlifyにしたら爆速になったし経緯とか教訓とか語る – Qiita
正直、Contentful も Gatsby も Netlify もどういうものかよく分かってないんだけど、WordPress に不満が溜まってきたからだ。
これ以上は後で書く。
takatoh's blog – Learning programming languages.
きっかけは Qiita のこの記事を読んで。
cf. 7年間使ってきたWordPressを捨ててContentful+Gatsby+Netlifyにしたら爆速になったし経緯とか教訓とか語る – Qiita
正直、Contentful も Gatsby も Netlify もどういうものかよく分かってないんだけど、WordPress に不満が溜まってきたからだ。
これ以上は後で書く。
年末にサーバを1台止めたので、そこに繋いでいた外付け HDD を使わなくなった。1TB の HDD で、もう使いみちもなさそうだから処分しようと思う。というわけで、中のデータを完全消去することにした。
Ubuntu (というか Linux?)には、shred
というコマンドがある。ファイルやディスクにランダムデータやゼロを書き込んで、データを消去、復元できなくするコマンドだ。
処分予定の HDD を Ubuntu マシンに繋いでみると、つぎのようになった。
takatoh@apostrophe $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 927.1G 0 part / └─sda3 8:3 0 3.9G 0 part [SWAP] sdb 8:16 0 931.5G 0 disk └─sdb1 8:17 0 931.5G 0 part /media/takatoh/805ec9ee-d5ae-4894-95b2-cea22ab0 sr0 11:0 1 1024M 0 rom
sdb が対象の HDD だ。このディスクのデータを消去するにはつぎのようにする。
takatoh@apostrophe $ sudo shred -uvz /dev/sdb
デフォルトでは、ランダムデータを書き込むことを3回繰り返す。指定したオプションの意味はつぎの通り。
というわけで、今回のケースでは都合4回書き込むことになるんだけど、昨日の夜に始めて約12時間くらいが経過した今朝の段階でやっと2回目の書き込みが始まったところ。予想以上に時間がかかりそうだなぁ。
マイIPが遅いので、何か別の方法はないかと調べていたところ、別のサーバで使っている MyDNS が独自ドメインも使えるということが分かった。
MyDNS を使っているのは、WiMAX でインターネットに接続してるサーバだ。WiMAX はグローバルアドレスを付与してくれるサービスがあるけど、そのアドレスは固定ではないので DDNS の MyDNS を使っていたわけ。で、これを使い始めた時には、無料で使えるのは MyDNS のサブドメインだけだと思ったんだけど、いま調べたら独自ドメインでも無料で使えるようだ。早速試してみよう。
独自ドメインのホスト名を仮に server3.panicblanket.com としよう。
MyDNS にログインして、DOMAIN INFO のページに移動する。このページで Domain、MX、Hostname を新しいホスト名に合わせて書き換えて、変更を反映させる。
つぎに、サーバのほうで、IP アドレスを通知するスクリプトを実行して、実際に使っているアドレスを通知する。
ドメイン自体はさくらインターネットで管理しているので、server3.panicblanket.com だけ、MyDNS のネームサーバを参照するように編集する。
具体的には、ゾーン編集の画面でつぎのように設定する。
ns0.mydns.jp は MyDNS のネームサーバ。最後に . (ドット)をつけるのを忘れないこと。server3.panicblanket.com の名前解決には ns0.mydns.jp を参照しろってことだな。
さて、これで設定は完了のはず。
新しい名前で ping もとおるし、ssh での接続もできるようになった。大丈夫のようだ。
先日、インターリンク社のマイIPサービスを使って固定IPアドレスを割り当てたわけだけど、はっきり言って通信速度が遅い。どのくらい遅いか、マイIPを使わない場合と比べてみた。
通信速度は fast.com ってページで測った。マイIP経由だと約1/100だ。何度か測ってみたけどだいたいこのオーダー。これじゃせっかくの NURO光回線(下り2Gbps,上り1Gbps)がもったいない。
そりゃもちろん、VPN を介してインターリンク社のネットワークを経由するんだから、その分遅くなるのは承知してたけど、これほどとは。これは何かほかの方法を考えるかなぁ。
インターリンクの FAQ に通信速度について書いてあった。曰く:
実際の通信速度は弊社のマイIPサーバーとお客様のPCとの間の接続環境によって変化します。
マイIPサービスの通信速度はどれくらいですか? – インターリンク FAQ
弊社ではおよそ 2Mbps~4Mbpsと推測しております。
だいたい実測通りだ。さきに言ってよ……(いや、見つけられなかったオレが悪いんだけどさ)。
NURO光は固定IPアドレスを割り当てるサービスを提供していないので、インターリンク社のマイIPというサービスを使って固定IPアドレスを割り当てる。
cf. INTERLINK
上のページから、マイIPサービスに申し込んだ。申し込み自体は何も難しくはない。クレジット払いにしたのですぐに利用できるようになる。
問題はここから。マイIPサービスは、VPN を使って PC とインターリンクのサーバを繋ぎ、PC の ppp0 インターフェイスに固定IPアドレスを割り当てるようになっている(ようだ)。そのためには PPTP クライアントの設定が必要なんだけど、これでハマった。
まずは環境を整理しておこう。
インターリンクの公開しているマニュアルに沿って作業する。
cf. https://faq.interlink.or.jp/faq2/View/wcDisplayContent.aspx?id=501
マイIP接続ツールをダウンロードして /etc 以下に展開。
[takatoh@rollo ~]$ curl -O https://www.interlink.or.jp/support/vpn/myip/myiptools/myiptools.tar.gz
[takatoh@rollo ~]$ sudo tar xvzf myiptools.tar.gz -C /etc
設定ファイル /etc/myip/myip.conf を自分の接続情報に合わせて編集。
[takatoh@rollo ~]$ sudo vim /etc/myip/myip.conf
初期設定スクリプトを実行。
[takatoh@rollo ~]$ sudo /etc/myip/myip-setup
ここでエラーが起きた。メッセージを抜粋する。
一致した引数がありません: pptp-setup エラー: 一致するものが見つかりません /etc/myip/myip-setup: 行 111: pptpsetup: コマンドが見つかりません /etc/myip/myip-setup: 行 117: /etc/ppp/peers/myip_miXXXXXX: そのようなファイルやディレクトリはありません
myip_miXXXXXX っていうファイルは自分用の設定ファイル(実際には miXXXXXX の部分に自分のログインIDが入る)。
初期設定スクリプト myip-setup の中を覗いてみて分かったのは、pptp-setup っていうパッケージをインストールしようとしているけどそれが失敗しているということと、そのせいか pptpsetup コマンドが見つからないようだ、ってことだ。
じゃあ、手動で pptp-setup パッケージをインストールしてやればいいかというと、そんなパッケージは無いらしい。
[takatoh@rollo ~]$ dnf search pptp-setup 一致する項目はありませんでした。
というところまでが昨日の話。
今日になっていろいろググってみたところ、PPTP Client の公式サイトを見つけた。
cf. http://pptpclient.sourceforge.net/
このページの Download セクションには、pptp には pptpsetup が含まれている、と書いてある。
pptp, the helper program used by pppd to make a tunnel, which also includes pptpsetup,
なら、ここからダウンロードして pptpsetup をコピーしてやったらいいんじゃないか。というわけで早速ダウンローとして展開。するとたしかに含まれていた。
[takatoh@rollo ~]$ wget https://sourceforge.net/projects/pptpclient/files/pptp/pptp-1.10.0/pptp-1.10.0.tar.gz
[takatoh@rollo ~]$ tar xzvf pptp-1.10.0.tar.gz
[takatoh@rollo ~]$ ls pptp-1.10.0 AUTHORS dirutil.c pptp_compat.h routing.c COPYING dirutil.h pptp_ctrl.c routing.h ChangeLog options.pptp pptp_ctrl.h test-redirections.c DEVELOPERS orckit_quirks.c pptp_gre.c test-redirections.h Documentation orckit_quirks.h pptp_gre.h util.c INSTALL ppp_fcs.c pptp_msg.h util.h Makefile ppp_fcs.h pptp_options.h vector.c NEWS pptp.8 pptp_quirks.c vector.h PROTOCOL-SECURITY pptp.c pptp_quirks.h vector_test.c README pptp_callmgr.c pptpsetup version.c TODO pptp_callmgr.h pqueue.c version.h USING pptp_compat.c pqueue.h
この pptpsetup、中を覗いてみると Perl のスクリプトのようだ。/usr/sbin にコピーして実行権限をつけてやる。
[takatoh@rollo ~]$ sudo cp pptp-1.10.0/pptpsetup /usr/sbin
[takatoh@rollo ~]$ sudo chmod 755 /usr/sbin/pptpsetup
さあ、これでどうだろう。初期設定スクリプトを実行。
[takatoh@rollo ~]$ sudo /etc/myip/myip-setup CentOS-8 - AppStream 2.0 kB/s | 4.3 kB 00:02 CentOS-8 - Base 3.2 kB/s | 3.9 kB 00:01 CentOS-8 - Extras 673 B/s | 1.5 kB 00:02 Package gawk-4.2.1-1.el8.x86_64 is already installed. Package sed-4.5-1.el8.x86_64 is already installed. 依存関係が解決しました。 行うべきことはありません。 完了しました! /sbin/pptpsetup: can't write to '/etc/ppp/peers/myip_miXXXXXX': No such file or directory /etc/myip/myip-setup: 行 117: /etc/ppp/peers/myip_miXXXXXX: そのようなファイルやディレクトリはありません done.
pptpsetup コマンドは実行できたようだけど、ファイルが書き込めないといっている。調べてみると /etc/ppp/peers ディレクトリが無いようなので作ってやる。
[takatoh@rollo ~]$ sudo mkdir /etc/ppp/peers
こんどはどうだ。
[takatoh@rollo ~]$ sudo /etc/myip/myip-setup メタデータの期限切れの最終確認: 0:01:04 時間前の 2019年12月15日 10時20分25秒 に実施しました。 Package gawk-4.2.1-1.el8.x86_64 is already installed. Package sed-4.5-1.el8.x86_64 is already installed. 依存関係が解決しました。 行うべきことはありません。 完了しました! done.
エラーなし。うまくいったようだ。これでやっと次にすすめる。
マニュアルによると:
PPTP接続に必要なTCPポート1723およびGREプロトコルを通過できるようにしておく必要があります。
と書いてあるけど、やり方が書いてない。ポートの開け方はわかる。
[takatoh@rollo ~]$ sudo firewall-cmd --zone=public --add-port=1723/tcp --permanent
GREプロトコルの方はググったら↓のページを見つけた。
cf. https://www.vultr.com/docs/how-to-establish-a-gre-tunnel-between-two-centos-7-servers
cf. https://github.com/firewalld/firewalld/issues/30
ip_gre モジュールをロードする。
[takatoh@rollo ~]$ modprobe ip_gre
GRE プロトコルを通過させるのは firewall-cmd でできるようだ。
[takatoh@rollo ~]$ sudo firewall-cmd --zone=public --add-rich-rule='rule protocol value="47" accept' --permanent
さあ、これで準備は整ったはずだ。
myip-up コマンドで接続を開始する。
[takatoh@rollo ~]$ sudo /etc/myip/myip-up Using interface ppp0 Connect: ppp0 <--> /dev/pts/1 CHAP authentication succeeded MPPE 128-bit stateless compression enabled local IP address 202.241.129.128 remote IP address 202.241.128.1 private IP mode. done.
ifconfig コマンドの出力(下はその抜粋)をみると、ppp0 インターフェイスに固定IPアドレスが割り振られているのがわかる。
ppp0: flags=4305 mtu 1346 inet 202.241.129.128 netmask 255.255.255.255 destination 202.241.128.1 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 7 bytes 100 (100.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7 bytes 134 (134.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ちなみに、接続を終了するには /etc/myip/myip-down コマンドを実行する。
別のネットワークに繋がってる Windows マシンから、http://202.241.129.128/hello.html にアクセスしたところ、ちゃんと「Hello, this is rollo.」と表示されるのを確認した(rollo ってのは VPN 接続したホストの名前)。
これにて無事完了。
一昨日(12/14)、スクリプトがエラーになって先に進めなくなったところで、インターリンク社に問い合わせをしたんだけど、今日になってその回答が来た。曰く:
大変申し訳ございませんが、マイIPはCentOS 8.0に対応しておりません。
……まぁ、予想はしてたけどね。リリースされたばっかりのディストリビューションだしね。
それに、パッケージが無かったりすりのはディストリビューションの方の問題であって、インターリンク社が悪いわけではない。
ともかく、CentOS 8.0 でマイIPサービスを使おうという人がいたら、上に書いた方法でうまくいったということを参考にしてもらおう。
昨日のことなんだけど、時間がとれなかったので今日書く。
回線の工事をやってもらって、NURO光が開通した。工事は宅内工事と屋外工事が必要なんだけど、1日でやってもらった(追加工事費がかかる)。宅内工事は午前中に、屋外工事は午後4時ころには終わった。
で、設置された ONU というルータみたいな機器に、apostrophe と rollo の2台を有線で繋いで試してみた。結果、2台のコンピュータ同士も通信できるし、もちろんインターネットにも接続できる。まずは大丈夫のようだ。この記事もNURO光で接続して書いてる。
デフォルトではネットワークアドレスが 192.168.1.0/24 になってるんだけど、これでは既存のネットワークとかぶるので、192.168.2.0/24 に変更する。
ONU は web 画面で設定できるようになっているので、http://192.168.1.1 にブラウザでアクセスしてログイン。ONU 自身のアドレスを始め、DHCP で割り当てるアドレスの範囲、デフォルトゲートウェイなどを 192.168.2.0/24 になるように変更した。これで電源を入れなおせばひとまずは完了。
あとは、web サーバをインターネットに公開するために、固定IPアドレスの設定なんかをやってたんだけどなかなかうまくいかずに昨日は時間切れ。というわけで今日書いてる次第。これについては記事を分ける。
ローカルネットワーク上に作った Samba サーバがこわれた。先週の土曜日の話で、細かいことは覚えてないのでおおまかに書く。
最初に書いておくと、この Samba サーバは、ホスト名を wplj といい、OS は Ubuntu 16.04。
事の発端は Samba サーバにユーザを限定した共有フォルダを作ろうとしたことだ。下のページあたりを参考に /etc/samba/smb.conf ファイルに追記して samba サービスをリスタートしたところ、エラーになった。
cf. アクセス権付の共有フォルダ作成 – Server World
追記した部分を削除してリスタートしてもエラーになる。仕方がないので Samba 自体をいったん削除してインストールしなおしても同じだった。再インストール後は最低限の設定だけで、共有フォルダを作らなくてもエラーになるんだから訳がわからない。設定自体は、さっきまで動いていた設定ファイル(バックアップしておいた)からコピペしたんだから間違ってないはずだ。どういうわけさ。
Samba サーバは Windows マシンのデータバックアップ用で、データ自体は残っているので大丈夫といえば大丈夫なんだけど、Windows からアクセスできなくなったのは不便だ。どうしようか。
とりあえず、データバックアップ用サーバの nightschool にデータを移動して、Samba サーバを立てた。nightschool は CentOS 7.7 だけど、すんなりといった。何が違うんだ。
とにかく、データに Windows からもアクセスできるようにはなったので良しとする。上に書いたように Samba は Windows マシンのデータバックアップ用途だったので、そういう意味では nightschool にまとまってよかったのかも。
ユーザを限定した共有フォルダを作る件についてはまた今度。
メインマシンの apostrophe (OS は Ubuntu 16.04 LTS)に Dropbox をインストールする。
まずはこのページから .deb ファイルをダウンロード。で、インストールする。.deb ファイルのインストールは dpkg コマンド。apt じゃないんだな。
takatoh@apostrophe $ cd Downloads takatoh@apostrophe $ ls dropbox_2019.02.14_amd64.deb takatoh@apostrophe $ sudo dpkg -i dropbox_2019.02.14_amd64.deb [sudo] takatoh のパスワード: 以前に未選択のパッケージ dropbox を選択しています。 (データベースを読み込んでいます … 現在 239399 個のファイルとディレクトリがインストールされています。) dropbox_2019.02.14_amd64.deb を展開する準備をしています … dropbox (2019.02.14) を展開しています… dpkg: 依存関係の問題により dropbox の設定ができません: dropbox は以下に依存 (depends) します: libpango1.0-0 (>= 1.36.3) …しかし: パッケージ libpango1.0-0 はまだインストールされていません。 dpkg: パッケージ dropbox の処理中にエラーが発生しました (--install): 依存関係の問題 - 設定を見送ります man-db (2.7.5-1) のトリガを処理しています … desktop-file-utils (0.22-1ubuntu5.2) のトリガを処理しています … bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) のトリガを処理しています … Rebuilding /usr/share/applications/bamf-2.index… gnome-menus (3.13.3-6ubuntu3.1) のトリガを処理しています … mime-support (3.59ubuntu1) のトリガを処理しています … hicolor-icon-theme (0.15-0ubuntu1.1) のトリガを処理しています … 処理中にエラーが発生しました: dropbox
あれ、エラーが発生した。libpango1.0-0 っていうパッケージがインストールされてないみたいだ。インストールする。こんどは apt で。
takatoh@apostrophe $ sudo apt install libpango1.0-0
もういちど Dropbox のインストール。
takatoh@apostrophe $ sudo dpkg -i dropbox_2019.02.14_amd64.deb (データベースを読み込んでいます … 現在 239431 個のファイルとディレクトリがインストールされています。) dropbox_2019.02.14_amd64.deb を展開する準備をしています … dropbox (2019.02.14) で (2019.02.14 に) 上書き展開しています … dropbox (2019.02.14) を設定しています … Please restart all running instances of Nautilus, or you will experience problems. i.e. nautilus --quit Dropbox installation successfully completed! You can start Dropbox from your applications menu. man-db (2.7.5-1) のトリガを処理しています … desktop-file-utils (0.22-1ubuntu5.2) のトリガを処理しています … bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) のトリガを処理しています … Rebuilding /usr/share/applications/bamf-2.index… gnome-menus (3.13.3-6ubuntu3.1) のトリガを処理しています … mime-support (3.59ubuntu1) のトリガを処理しています … hicolor-icon-theme (0.15-0ubuntu1.1) のトリガを処理しています …
こんどは大丈夫のようだ。しばらく待つと、Dropbox のウィンドウが立ち上がるので、指示に従って Dropbox をスタート。あとはアカウントの設定をすれば、ファイルの同期が始まる。
前エントリ、というかその追記部分の続き。
MyDNS にログインして、DNS の更新ログを見てみると、最後に IPv4 が更新されたのが24日の17時ころ。その後更新されてない。
いったんはうまくいったのは、24日17時ころに更新した IPv4 アドレスが有効だったからだろう。その後 WiMAX 端末に割り当てられたアドレスが変わったにもかかわらず、DNS が更新されなかったのが原因ではないか。もう少し正確に言うと、IPv6 アドレスだけが更新されて IPv4 アドレスが更新されなかったのが原因なんだと思う。
そこで、試しに MyDNS の設定ページで IPv4 アドレスを 0.0.0.0、IPv6 アドレスを 0:0:0:0:0:0:0:0 に設定しておいて、bigswifty 上でアドレス通知のスクリプトを実行してみた。すると案の定、IPv6 アドレスだけが更新されて、IPv4 アドレスは 0.0.0.0 のままだった。思ったとおりだ。
で、どうすればいいかというと、MyDNS のページにヒントが書いてあった。曰く、IPv4 と IPv6 のデュアルスタックのマシンでは通常の通知先 www.mydns.jp ではうまくいかないことがあるらしく、IPv4 アドレスを更新したい場合は ipv4.mydns.jp に通知しろ、ということのようだ。
なのでアドレス通知スクリプトの中の通知先ホスト名を上記の通り変更して、実行してみた。すると、今度はちゃんと IPv4 アドレスが更新された。ログでも確認できたし、ping も通るようになった。
さあ、これでやっと解決だ……というところまでが昨日の朝の話。
その後、夕方ころに出先からファイルダウンロードを試してみたらちゃんとダウンロードできたので大丈夫だと思っていた。ところが家に返ってきて試してみると、やっぱりエラーページが表示されてダウンロードできない。けれどふと気がついて、借りている VPS に ssh でログインして、そこから(つまり家のローカルネットワークでないところから)試してみると、ちゃんとダウンロードできる。どうも家のネットワークからだとエラーになるみたいだ。どゆこと?
でも、まぁ、外部向けの web サーバなんだから外部から使えればそれでいいか。
dnf install コマンドでインストール。
[takatoh@rollo ~]$ sudo dnf install nginx
有効化とスタート。
[takatoh@rollo ~]$ sudo systemctl enable nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service. [takatoh@rollo ~]$ sudo systemctl start nginx
ステータスの確認。
[takatoh@rollo ~]$ systemctl status nginx ● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2019-11-19 03:01:37 JST; 8min ago Process: 10021 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 10019 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 10017 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 10022 (nginx) Tasks: 5 (limit: 26213) Memory: 8.9M CGroup: /system.slice/nginx.service ├─10022 nginx: master process /usr/sbin/nginx ├─10023 nginx: worker process ├─10024 nginx: worker process ├─10025 nginx: worker process └─10026 nginx: worker process 11月 19 03:01:37 rollo systemd[1]: Starting The nginx HTTP and reverse proxy server… 11月 19 03:01:37 rollo nginx[10019]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 11月 19 03:01:37 rollo nginx[10019]: nginx: configuration file /etc/nginx/nginx.conf test is successful 11月 19 03:01:37 rollo systemd[1]: Started The nginx HTTP and reverse proxy server.
OK。ちゃんと起動したようだ。
80番ポートを開ける。
[takatoh@rollo ~]$ sudo firewall-cmd --permanent --zone=public --add-service=http success
firewalld をリロード。
[takatoh@rollo ~]$ sudo firewall-cmd --reload success
これで OK のはず。ほかのマシンからブラウザでアクセスしてみたら、ちゃんと Nginx のデフォルトページが表示された。