昔はボコボコにやられてたけど、今では余裕で倒せるな。
XSERVER APIでDDNSモドキ
XSERVER からサーバー操作できるAPIのお知らせメールが来ていたので、早速、今まで使っていたツールをそれ用に書き換え。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
<?php $api_key = '[APIキー]'; $server_id = 'xsvx1023505'; $servername = $server_id.'.xsrv.jp'; $api_base_url = 'https://api.xserver.ne.jp'; $api_base_path = '/v1/server/'.$servername; $target = 'silverfox'; $domain = 'noizumi.org'; $url_ip_prog = 'https://yuji.noizumi.org/ip.php'; $url_ip_txt = 'https://yuji.noizumi.org/ip.txt'; $dns_id = '76684883'; // 作成済のDNSレコードID silverfox.noizumi.org // nslookup から、現在DNSに登録されているIPアドレスを抜き出す。 ob_start(); passthru('nslookup '.$target.'.'.$domain.' ns5.xserver.jp'); $buf = ob_get_clean(); $hosts = ''; if(preg_match_all('/Address:\s+((\d+\.){3}\d+)/',$buf ,$matches)){ $hosts = $matches[1][1]; } // IPv4を明示的に指定して接続するコンテキストを作成 $context = stream_context_create([ 'socket' => [ // IPv4アドレスでバインドする(通常は0.0.0.0:0) 'bindto' => '0.0.0.0:0', ], ]); $response = file_get_contents($url_ip_prog, false, $context); if(preg_match('/Your IP address is ([0-9.]*)/', $response, $matches)){ $myip = $matches[1]; }else{ $myip = file_get_contents($url_ip_txt); } if($myip==$hosts){ exit(0); } $params = array( 'domain' => $domain, 'host' => $target, 'type' => 'A', 'content' => $myip ); $fields = json_encode($params); $header = array( 'Content-Type: application/json', 'Content-Length: ' . strlen($fields), 'Authorization: Bearer '.$api_key ); $ch = curl_init(); //curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); // IPv4 Only. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // HTTPレスポンス 30x を追跡する。 curl_setopt($ch, CURLOPT_HEADER, false); $command = '/dns/'.$dns_id; curl_setopt($ch, CURLOPT_URL, $api_base_url.$api_base_path.$command); $output = curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_RESPONSE_CODE); curl_close($ch); ?> |
asahiネットにプロバイダ変更して、IPv6環境になり、XSERVER以外のサーバーにアクセスすると、IPv6のアドレスが記録されちゃうので、file_get_contents()で、明示的にIPv4でアクセスするようにしてある。
次のプログラムは、XSERVERに置いておいて、家のサーバーからアクセスすると、家の回線のIPv4アドレスが分かるやつ。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ip = $_SERVER['REMOTE_ADDR']; file_put_contents( 'ip.txt', $ip ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>IP address</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 1.27" /> </head> <body> Your IP address is <?php echo $ip ?> </body> </html> |
VPNで家のサーバーに接続する際に、家の回線はIPアドレス固定じゃないので、ルーター再起動したりすると、IPアドレスが変わってしまう。
その為、家のサーバーで、5分おきに ipcheck.php を走らせて、DNS情報と、実際のIPアドレスに相違があるかをチェックしていて、違っていたら、XSERVERのDNSをAPIで変更するようになっている。
【皇紀2686年4月21日追加 ここから】
APIのパラメータはjsonエンコードが必要なので、ソースを変更しました。
【皇紀2686年4月21日追加 ここまで】
【原神】プレイ画面キャプチャ
ダメージの数値見る限り、そんなに出てないけど、なぜかこの編成が一番早く敵を倒せるんだな。
【fail2ban】VPSサーバーより狙われる光回線接続
最近、不正アクセスの遮断を調整しているが、VPSサーバーよりも家のサーバーの方がやたら多いのに気がついた。
|
1 2 3 4 5 6 7 8 9 10 |
noizumi@irc:~$ sudo fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 102 | |- Total failed: 930 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 635 |- Total banned: 667 `- Banned IP list: 101.47.141.214 103.143.231.99 103.149.27.208 <以下略> |
|
1 2 3 4 5 6 7 8 9 10 |
noizumi@silverfox:~ $ sudo fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 472 | |- Total failed: 2168 | `- Journal matches: _SYSTEMD_UNIT=ssh.service + _COMM=sshd `- Actions |- Currently banned: 1503 |- Total banned: 1506 `- Banned IP list: 1.1.179.83 1.194.225.25 1.212.225.99 1.235.192.130 1.235.192.131 <以下略> |
VPSサーバーが 635件、家が 1,503件と倍以上の不正アクセスがある。
やはり、外に立てたサーバーより、家庭につないだ回線に存在するサーバーの方がセキュリティが甘いから、多いのかな?
適当なIPアドレスの範囲に対して、不正アクセスを試みていると思っていたが、ちゃんと確率の高そうな所へ資源の投入をしてるんだなあ。
まあ、家もVPSもsshdは公開鍵認証で、プライベートIPアドレスのみパスワード認証も許可している設定なので、そもそも総当たりのパスワード破りが最初からできないようにしてあるから、特に心配は無い。
しかし、ログにだらだらと記録されるのがウザいので、臭いにおいは元から断たなきゃダメという事で、接続遮断している 🙂
外も家も同条件のフィルタだが、3日間で4回以上の不正アクセスで1週間接続遮断し、それ以降も2週間以内に同じIPアドレスが不正アクセスして来たら、再犯ルールで1年間接続遮断するようにしている。
不正アクセスのパターンを見ていると、2~3回で止め、時間を置いて再び繰り返すという明らかに fail2ban の設定を意識した不正アクセスをして来ているので、判定期間を長めに取って、再犯ルールも追加したという次第。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[sshd] # "bantime" is the number of seconds that a host is banned. bantime = 1w # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. findtime = 3d # "maxretry" is the number of failures before a host get banned. maxretry = 4 mode = aggressive [recidive] enabled = true bantime = 31536000 ; 1 year findtime = 1209600 ; 2 weeks maxretry = 2 |
ルーターは接続を通すポートのみポート変換機能で一々登録して通しているが、面倒くさがりだと、DMZとしてサーバー1台丸々外から見える状態にしてるってのもあるだろう。
踏み台にされて警察にお呼ばれする前に、厳密な設定の運用にした方がいい象。
【Raspberry Pi4】dovecot設定
Rasberry Pi OS liteのメールサーバーdovecotで、またパラメータが変わってて、Maildirの設定にちょっと苦労した。
mail_location が廃止されたので、namespace で解決するのが正しいようだ。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<前略> namespace inbox { inbox = yes separator = / prefix = "#mbox/" mail_driver = mbox mail_path = ~/mail mail_inbox_path = /var/mail/%{user} hidden = yes list = no } namespace maildir { separator = / prefix = mail_driver = maildir mail_path = ~/Maildir } <後略> |
INBOX は /var/mail/noizumi で、他のフォルダ類は Maildir形式の /home/noizumi/Maildir に保管してるので先の設定にした。
昔、mbox 形式だと、メールフォルダの階層化ができなくて、フォルダ削除して Trash/delFolder みたいな状況になると、削除できなくなるってのがあったので、Maildirにしている。
今、mbox はフォルダの階層化できるようになってるんだろうか? AIさんに聞いてみる 🙂
はい、IMAPを利用している場合、mbox形式のメールボックスであってもフォルダの階層化(サブフォルダ作成)は可能です。技術的には、ThunderbirdなどのIMAP対応メールクライアントを使用してサーバー上にフォルダを作成・管理することで、階層構造が実現されます。
あー、mboxはサーバー側にディレクトリを掘らずにファイルしか配置できないから、ファイル名に区切り文字で階層を表してる。
つまり、メールクライアントによっては、うまく判別できずに階層構造にならないって事もあり得るんだな。
じゃあ、Maildir形式の方がいいな。
新しく買ったHDDケース
ORICO 9928RU3を買った。
支那製だが、レオナルド・ディカプリオのカードのCMとは関係ない 🙂
どうせ日本メーカーでも、中身は支那製だし、日本メーカーと同価格帯なら、日本企業のマージン分、中の品質が高い可能性がある。
買って、大爆死する可能性があるので、今まで買った製品に触れなかったけど、アルミ筐体で冷えやすく、従来品よりファンの音もうるさく無く、速度も速いので、中々良い。
Amazonだと、同じ製品で、もっと安いページもあるが、低評価レビューがあって、欠陥品ロットがまとめられたページの気がするので、高い方のページでこうにう。
RAID1を構成するのに、この手の製品は今まで使っていたRAID1のデータの入ったディスクを継承できないので、新規にWD20EARZ-ECを2つこうにう。
昔買った値段より1.5倍くらいになっとるね 🙁
新規RAID1のディスクを構築してから、今まで使ってたディスクの1本をGREENHOUSEのIDE/SATA→USB2.0の変換コネクタを繋いで、必要なデータをコピーした。
新しく買ったディスクは、データ転送速度が180MB/s だそうなので、HDDケースに入れて、速度を計ってみる。
|
1 2 3 4 5 |
noizumi@silverfox:~ $ sudo hdparm -tT /dev/sda2 /dev/sda2: Timing cached reads: 2380 MB in 2.00 seconds = 1190.40 MB/sec Timing buffered disk reads: 610 MB in 3.00 seconds = 203.08 MB/sec |
「UASP対応」と謳ってるだけあって速い。
元のディスクスピードの180MB/sを上回ってるのは、RAID1は読み出しに関しては2台のディスクから読めるので、その分高速化されるのだろう。
果たして耐久性はいかがなものか。
せめてハードディスクより先に逝って欲しくないなあ。
【Raspberry Pi4】家のサーバー復旧ちう
という事で、Raspberry Pi Imagerを取ってきて、Raspberry Pi OS Lite 64bitをRAID1のHDDケースにインストール。
どうせ、GUI使わないので、X Window System系が入ってないのにした。
割と短時間で終了し、HDDが2TBなのに、ディスクイメージのサイズで限定され、容量が少ないなんて事もなく、フルに2TBを使っていた。
|
1 2 3 |
Device Boot Start End Sectors Size Id Type /dev/sda1 16384 1064959 1048576 512M c W95 FAT32 (LBA) /dev/sda2 1064960 3906928639 3905863680 1.8T 83 Linux |
最近のディストリビューションは、swapパーティション切らないのね。
後、SoftEther VPN serverを使う上で、ネットワークでbridgeデバイスを使う必要がある。
今までのUbuntu 24.04LTSでの構築経験上、desktop版は正常に作成できず、server版だとうまくいくというのがあって、NetworkManagerベースは避けたかった。
で、Raspberry Pi4(以下RP4)にHDDを繋ぎ替えて起動すると、ルーターでRP4のMACアドレスに192.168.11.254を割り当てていたので、DHCPでIPアドレス設定はできたから、これもサクッとssh接続できた。
bridgeデバイスを作成する上で、Ubuntuのserver版だと、netplanのスクリプト書いて、netplan apply でサクッと作れていた。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
network: version: 2 renderer: networkd ethernets: eth0: dhcp4: false dhcp6: false match: macaddress: dc:a6:32:af:d1:19 set-name: eth0 tap_softether: dhcp4: false dhcp6: false bridges: br0: dhcp4: false dhcp6: false interfaces: - eth0 - tap_softether addresses: - 192.168.11.254/24 routes: - to: default via: 192.168.11.1 metric: 1000 - to: 192.168.30.0/24 via: 192.168.11.253 metric: 500 nameservers: addresses: - 192.168.11.1 |
しかし、NetworkManagerが生きてると、bridgeにeth0とtap_softetherの2つをぶら下げないといけないのに、eth0しか無いという状態にされる。
恐らく、NetworkManagerの不具合だと思われるが、bridgeに2つのslaveぶら下げてて、1つしか有効にならないなんて事例が無いw
netplanとNetworkManagerの統合を進めているらしいが、Raspberry Pi OSのベースのdebian 13では、よりNetworkManager寄りになっているようだ。
という事で、
|
1 2 3 4 5 |
noizumi@silverfox:~ $ sudo systemctl stop NetworkManager noizumi@silverfox:~ $ sudo systemctl disable NetworkManager Removed '/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service'. Removed '/etc/systemd/system/multi-user.target.wants/NetworkManager.service'. Removed '/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service'. |
|
1 2 3 4 5 6 7 |
noizumi@silverfox:~ $ sudo systemctl start systemd-networkd noizumi@silverfox:~ $ sudo systemctl enable systemd-networkd Created symlink '/etc/systemd/system/dbus-org.freedesktop.network1.service' → '/usr/lib/systemd/system/systemd-networkd.service'. Created symlink '/etc/systemd/system/multi-user.target.wants/systemd-networkd.service' → '/usr/lib/systemd/system/systemd-networkd.service'. Created symlink '/etc/systemd/system/sockets.target.wants/systemd-networkd.socket' → '/usr/lib/systemd/system/systemd-networkd.socket'. Created symlink '/etc/systemd/system/sysinit.target.wants/systemd-network-generator.service' → '/usr/lib/systemd/system/systemd-network-generator.service'. Created symlink '/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service' → '/usr/lib/systemd/system/systemd-networkd-wait-online.service'. |
|
1 2 3 |
noizumi@silverfox:~ $ bridge link show br0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 5 5: tap_softether: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding priority 32 cost 2 |
無事に br0 デバイスができた 🙂
あと、やった事色々。
apt install fail2ban tcpdump apache2 telnet default-jre-headless php php-xml php-curl php-mbstring samba smbclient certbot nslookup bind9-dnsutils python3-certbot-apache
a2ensite 000-default-le-ssl
a2enmod userdir
a2enmod rewrite
a2enmod ssl
a2enmod auth_digest
a2enconf auth_digest
そして、コピー元ディスク見ていて、メールサーバーの postfix がインストールされてて、設定もやってるんだけど、何でだったのかと暫く考える……
あー、SPFの設定で、silverfox.noizumi.orgを送信ホストとして登録したくなかったから、家のサーバーのメールもirc.noizumi.orgへ投げるようにしたんだっけ。
あと、zoneminderとかあるけど、家の玄関リフォームしたせいで監視カメラ撤去したし、その間にプロバイダ変更したから、監視カメラのWiFi設定変えないといけないし、面倒だから、後回しにして原神やろう 🙂
HDDケースぶっ壊れた。
家でRaspberry Pi4にUSBでHDD RAID1のケース(センチュリー 裸族の二世帯住宅 CRNS35EU3S6G)を接続して、ホームサーバーにしているが、認識しなくなった。
RAID1 は 2台のHDDで構成し、2台共同じ内容にして、1台が壊れても、新しいハードディスクと入れ替えてやれば、再び複製を開始して、継続して使用できるというコンセプトだ。
ところが、その母体となるHDD ケースが壊れたのでは、いくらデータの冗長性を確保していようが、全く意味がない。
まあ、8年使用したので、壊れても仕方がない気がするが、壊れやすいHDDが壊れていないのに、HDDケースの方が先に壊れるというのは、何とも納得しがたいものがあるのであった。 🙁
【原神】世界ランク9
【原神】ちょっと飽きてきた
101日目、チャスカを強化したら、強化待ちで余りする事が無くなり、ストーリー的にはスメール終わってフォンテーヌへ行こうという所だが、世界任務は時間が掛かって中々日々の限られた時間ではやろうという気が起きない。
ちなみに持ちキャラが少ない時に、「カチーナが貰える」という案内が来たので、ナタ編を開始しちゃってるが、多分ナタ編最後の任務の「講談室へ行く」で止めてある。
チャスカはこんな感じだが、風元素キャラクターで、元素スキルが編成した各キャラクターの元素を弾丸にして発射するという特異なスキルを持っている。
通常なら、各キャラ切り替えて元素スキルを実行する事で、元素反応を起こしてダメージを与える所、チャスカのスキルだけで何とかなってしまう。
編成にシールドキャラクタ1名入れて、後は育成していない Lv.1の火、氷、水、雷のキャラを編成すればOKで、チャスカは風元素キャラなので、拡散という便利な反応で、草岩を除く他の元素を再度付着してダメージを与える。

草と雷か火か水で更なる反応があるが、拡散反応はこれらをサポートしてないので、風元素キャラのチャスカには関係無いし、後々更なる高ダメージを狙いに行くので無ければ、今の所必要無い。
なので、草神ナヒーダのガチャは引いてない 🙂
チャスカとシールドキャラが居れば何とかなってしまうので、Lv.90になったチャスカの強化待ち状態では、他のキャラクタの育成モチベーションが上がらない。
とりあえず、他のキャラが上げられる様、経験値アイテム獲得の為に世界任務を頑張る。





