tohokuaikiのチラシの裏

技術的ネタとか。

JetBrainのPhpStormがアップデートに失敗してたのを直した件

PhpStormが自動アップデートするのがずっと失敗するのをずっと放置してたのだけど、やっと直した。

なんか、しょっちゅうこんなエラー出てて「ま、いいか…」としてたんだけど。

f:id:tohokuaiki:20200720103641p:plain

Failed to extract packeage.Failed to find 7zip executable in the package at C:.....

で、このエラー見たら単に7z.exeが無いだけなんで、 https://sevenzip.osdn.jp/ からダウンロードしたファイルの中にある7z.exeを上記のエラーメッセージのパスに入れたら無事アップデートできた。

最初、7zipを普通にインストールしてPATHを通せばいいのかな?とか思ってやったらダメで実はもっと簡単な話だった。

debian10で、DNSをひいてくれなくて困った件

さくらのクラウドでdebian10を作ったのですが、サーバによってDNSが引けなくて困っていた。

現象としては、コントロールパネルからは「推奨ネームサーバ」というのがあり、そのネームサーバーとIPアドレスの上6セグメントが一致しているとダメだった。

f:id:tohokuaiki:20200413142244p:plain

こんな感じ。

原因究明

原因を探ってみたけど、iptalbesでも向こう側のネームサーバーのダウンでもなく(他の153.120.xxx.xxxのIPアドレスのサーバーからはDNSが使える)困ってしまった。

$ telnet 133.242.0.3 53
Trying 133.242.0.3...
telnet: Unable to connect to remote host: No route to host

という感じ。

解決

結論から申し上げますと、 etc/network/interfaces の dns-nameservers 133.242.0.3 133.242.0.4 を削除したところ、通った。

DNSは、/etc/resolv.confを参照しているのでこの記述は不要だったのかもだけど、まさか悪さをしているとは思えなかった…。

このあたり、 や、 を読むと分かるのかなーと思いきや、そんな気力も沸かなくて…

これに気付いたのは、クラウドでサーバーを作成時の自動ネットワーク設定にしたところ、etc/network/interfaces にdns-nameservers の設定行が無くて気が付いたのだった。ずーっとこのファイルのnetmaskの設定あたりなのかなーって思ってた。この1行があると、他の133.242..のサーバーへのsshも通してくれなくて、ローカルスイッチ導入しちゃったよ…。まぁ、これはこれで良かったのだけど。

さくらクラウドのAPIを動かすスクリプト作った

APIからシャットダウンとかメモリ増やしたり減らしたり

したいなとういうことで。

以下のcomposer.jsonでulrichsg/getopt-phpとsakura-internet/saklientをインストールしてください。

{
    "name": "vagrant/sakura_cloug_api",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "ITOH Takashi",
            "email": ""
        }
    ],
    "require": {
        "sakura-internet/saklient": "0.0.2.11",
        "ulrichsg/getopt-php": "^3.3"
    }
}

あとはこっちで。

さくらのクラウドで共有セグメントにつながれた2つのサーバーでsshする

OSはdebian10

共有セグメントから2つぶら下げる感じでサーバーを立てた。1つは本番、1つはバックアップ兼緊急時用。

f:id:tohokuaiki:20200406213101p:plain

で、バックアップ用から本番サーバーにsshしようとしたらつながらない…No route to host…

ん~。ネットワークのことよく知らないからこの辺り「何でつながらないんだ?」となってしまった。

IPアドレスが第2セグメントまで同じなので、サブネットマスクを255.255.0.0にしたらいけるのか?と思いきやダメ。

ローカルでつなぐ

というわけで、サーバーにそれぞれNICを1枚ずつ追加し、追加したスイッチでローカルでつないでみた。こんな感じ。

f:id:tohokuaiki:20200406213618p:plain

で、ネットワークIPアドレスを設定する。

本番サーバー /etc/network/interfaces に下記を追加

auto ens4
iface ens4 inet static
        address 192.168.0.10
        netmask 255.255.255.0

全部でこんな感じ。

# more /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens3
auto ens3
iface ens3 inet static
        address 153.127.xxx.xxx
        gateway 153.127.xxx.1
        # dns-* options are implemented by the resolvconf package, if installed
        # dns-nameservers 133.242.0.3 133.242.0.4
        dns-nameservers 210.188.224.10 210.188.224.11
        dns-search anytimefitness.co.jp

iface ens3 inet6 static
        address 2401:2500:102:3017:153:126:162:197
        netmask 64
        gateway fe80::1
        dns-nameservers 2401:2500::1

auto ens4
iface ens4 inet static
        address 192.168.0.10
        netmask 255.255.255.0

バックアップ用にも同様にIPアドレスだけ変えて追加。

これで通信できるようになった。

iptablesの設定を忘れずに

#########
#local network
#########
iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/16 -j ACCEPT

ってやっておく。