Open31

Server

sakusaku

sambaの外付けHDD間で定期増分バックアップを実行させたい。

sakusaku

Ubuntu上でHDD1→HDD2への自動ミラーリング

#backup.shの作成
sudo vi backup.sh
    rsync -avud -delete /mnt/hdd1 /mnt/hdd2

#cronで定期実行(nano選択)
sudo crontab -e
1
#毎日3時に実行
0 3 * * * backup.sh > /var/log/cron.log 2>&1

#テスト実行
sudo bash backup.sh
sakusaku

-a アーカイブモード:ファイル属性を保持
-v 詳細モード:経過表示
-u 更新モード:宛先のファイルが新しい場合はコピーしない
-z 圧縮モード:転送データを圧縮し、帯域幅を節約
-delete :宛先に存在し送信元に存在しないファイルは削除する(完全ミラー)
2>&1:1が標準出力で2がエラー出力。この場合はエラー出力も標準出力にいれて吐き出してと設定している

sakusaku

ZABBIXのインストール復習
・基本は説明書通りにインストール可能
・upkgで必要なデータが入っていない(デモデータ)→tarのファイルからsqlだけ引っ張ってくる
・Agent2はpassiveでまず確認する

sakusaku

とりあえずBINDの設定はできたようなのでメモ。Windows側からも名前解決できている。
https://changineer.info/vmware/hypervisor/vmware_ubuntu_dns.html

#bindインストール
apt install bind9 bind9utils

# confファイルを編集
vi /etc/bind/named.conf
    include "/etc/bind/named.conf.local";
    // BIND設定オプションファイル
    include "/etc/bind/named.conf.options";
    // BINDゾーン情報ファイル
    include "/etc/bind/named.conf.default-zones";

# Ubuntuはnamed.conf.localで設定
sudo vi /etc/bind/named.conf.local
    zone "saku.XXX" {
        type master;
        file "/etc/bind/saku.XXX" ;
    };
    zone "1.23.172.in-addr.arpa" {
        type master;
        file "/etc/bind/1.23.172.db" ;
    };

# オプションの設定
vi /etc/bind/named.conf.options
// SUBNET
    acl internal-network {
        172.23.1.0/24;
        172.23.10.0/24;
    };

    options {
        directory "/var/cache/bind";
    forwarders {
            8.8.8.8; // Google Public DNS
            8.8.4.4; // Google Public DNS Secoundary
    };
    // ACLの指定
    allow-query {
            localhost;
            internal-network;
    };

    recursion yes;
    forward only;
    dnssec-validation auto;
    // いったんipv6は許可しない
    listen-on-v6 { none; };
    // バージョンは教えない
    version "I won't tell you my version.";
 };

# 正引きファイル
vi /etc/bind/saku.XXX
    $TTL 86400
    @       IN      SOA     ns.saku.XXX. root.saku.XXX. (
                    2024120501      ;Serial
                    3600            ;Refresh
                    1000            ;Retry
                    604800          ;Expire
                    86400           ;Minimum TTL
    );
    @       IN NS   ns.saku.com.
    @       IN A    172.23.1.1      ;DNSサーバーのIP
    ns      IN A    172.23.1.1
    saku-samba      IN CNAME        saku-Ubuntu1
    saku-Ubuntu1    IN A    172.23.1.1
    saku-zabbix     IN CNAME        saku-Ubuntu2
    saku-Ubuntu2    IN A    172.23.1.2

# 逆引きファイル
vi /etc/bind/1.23.172.db
    $TTL 86400
    @       IN      SOA     ns.saku.XXX.    root.saku.XXX.  (
                2024120501      ;Serial
                3600            ;Refresh
                1000            ;Retry
                604800          ;Expire
                86400           ;Minimum TTL

    );
    @       IN NS   ns.saku.XXX.
    1       IN PTR  ns.saku.XXX.
    2       IN PTR  saku-Ubuntu2.saku.XXX.

# UFWの許可
ufw allow 53/tcp
ufw allow 53/udp

# 設定の反映
systemctl restart bind9 bind9utls
systemctl status bind9

# 通信確認
dig saku.XXX @127.0.0.1
dig -x 172.23.1.1 @127.0.0.1

# ローカル側のDNS設定
vi /etc/netplan/99-cloud-init.yaml →nameserver変更
もしくは
vi /etc/resolv.conf →DNSserverのIPに変更
sakusaku

CNAMEで別名を作成したら

sudo:unable to resolve host saku-Ubuntu1: Name or service not known

と表示されて実行できなくなった。
どうやらホスト名が解決できなかったことが問題らしい。

vi /etc/hosts
    127.0.1.1 hostname.domainname saku-Ubuntu1

と変更したところ実行できた。この部分も変更しておいた方が良いのか?注意。

sakusaku

NTP(chrony)のセットアップ
メイン:ntp.nict.jp
バックアップ:0.jp.pool.ntp.org / 1.jp.pool.ntp.org / 2.jp.pool.ntp.org
jp.pool.ntp.orgは、NTP POOL PROJECTのNTPサーバのこと。
https://tech.willserver.asia/2022/12/23/lix-ubt2204-ntp-server/

# インストール
apt install chrony

# 有効化
systemctl enable chrony
systemctl start chrony

# confのバックアップ
cp -a /etc/chrony/chrony.conf /etc/chrony/chrony.conf.org

# confの編集、pool部分はコメントアウト
vi /etc/chrony/chrony.conf
    # pool ntp.ubuntu.com        iburst maxsources 4
    # pool 0.ubuntu.pool.ntp.org iburst maxsources 1]
    # pool 1.ubuntu.pool.ntp.org iburst maxsources 1
    # pool 2.ubuntu.pool.ntp.org iburst maxsources 2
    # minpollとmaxpollを指定するのがWANのNTPを指定する際のマナーらしい
    # ntpサーバーはメイン1台、バックアップ3台設定しておく
    server ntp.nict.jp minpoll 6 maxpoll 8
    server 0.jp.pool.ntp.org minpoll 6 maxpoll 8
    server 1.jp.pool.ntp.org minpoll 6 maxpoll 8
    server 2.jp.pool.ntp.org minpoll 6 maxpoll 8

    # 最終行に許可IPを設定
    # Allow IPs
        deny all
        allow 172.23.1.0/24
        allow 172.23.10.0/24

# サービスの再起動
systemctl restart chrony

# NTPサーバーとの通信確認
chronycc sources
sakusaku

<server / poll> <NTPサーバのホスト名> と記載することで、上位のNTPサーバを設定できます。
オプションで記載しているminpollとmaxpollは上位のNTPサーバに問い合わせを行う間隔です。
2の階乗秒の間隔で取得しに行きます。(minpoll 6であれば最小64秒間隔、maxpoll 10であれば最大1024秒間隔)
これについては、内部のNTPサーバを参照するのであれば特に気にする必要はありませんが、外部のNTPサーバに問い合わせを行う場合、マナーとして設定しておきましょう。

sakusaku

NTPサーバーの設置と適用が終わったのでTFTPサーバーを立てて、コンフィグとファームウェア置き場を作る。

# TFTPサーバーのインストール
apt install tftpd-hpa

#オプションファイルの編集(読み込み専用になっているため、オプションにCreateを追加)
vi /etc/default/tftpd-hpa
    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/srv/tftp"
    TFTP_ADDRESS=":69"
    TFTP_OPTIONS="--secure --create"

# サービスの有効化
systemctl enable tftpd-hpa
systemctl restart tftpd-hpa
ystemctl status tftpd-hpa

# ファイアウォールの許可設定
ufw allow 69/udp

# Ciscoからコンフィグのアップロードテスト
copy running-config tftp
> 今回立てたサーバーのIP
> test-running-config

# サーバー側でアップロードされたか確認
ls -a /srv/tftp
sakusaku

cronが正常に動いていないようなので確認する。実行自体がされていないよう。
"* * * * *"で実行したところfile not found.の表示が出たので、とりあえずディレクトリ変えてみた。

/home/XXX/backup.sh > /usr/local/crontab/backup.sh

bashとshは基本的には同じだが、拡張bashの実行時にshが拾いきれない動きがあるとのこと。可能ならbashで動かすのがいいのかも。

sakusaku

ZABBIX側のUbuntuにNTPクライアントの設定が入れられていなかった。これでクライアントとしての設定も終了。

# chronyのインストール
apt install chrony

# chronyのコンフィグのバックアップ&編集
cp -a /etc/chrony/chrony.conf /etc/chrony/chrony.conf.org
vi /etc/chrony/chrony.conf

# 参照元を指定(poolの入っているものはコメントアウトして使わない)
pool 172.23.1.2 iburst を追加

# サービスの再起動と有効化
systemctl enable chrony
systemctl restart chrony
systemctl status chrony
chronyc sources

# Cisco側の設定
ntp server 172.23.1.2
show ntp associations

# YAMAHA側の設定
schedule at 1 */* 00:00 * command ntpdate 172.23.1.2
sakusaku

外付けSSDが激安で手に入ったので、ここにSyslogサーバー立ててログ集約する。

sakusaku

SSHが何やっても繋がるようにならない。どうすればいいんだこれ。

sakusaku

結局色んな記事見て試したけど何をやってもだめだった。とりあえずパスワード認証で確認しようにもそこすら繋がらない。

sakusaku

あっという間にできた。何だったんだ。

sakusaku

Ubuntu IP固定の手順→NICでリンクアップしてないと表示されない。

cp /etc/netplan/50-cloud-init /etc/netplan/99-cloud-init.yaml
vi /etc/netplan/99-cloud-init.yaml
    dhcp4: false
    dhcp6: false
    addresses:
    - 172.23.1.3/24
    routes:
    - to: default
        via: 172.23.1.254
    nameservers:
        addresses:
        - 172.23.1.1
sakusaku

Ubuntu24.04LTS SSHの設定(パスワード認証)

# opensshのインストール
apt install openssh-server
# 接続ユーザーの.sshディレクトリのパーミッション変更
chmod 700 /home/ユーザー名/.ssh
# sshd_config(サーバー側)の変更
vi /etc/ssh/sshd_config
    PermitRootLogin without-password
    PasswordAuthentication yes
    PermitEmptyPassword no
# サービスの再起動
systemctl restart sshd

OSの再インストールを行って同じ手順で2回目は成功。ホスト名の未設定っぽい。

sakusaku

外付けHDDのマウントとフォーマット

# 外付けHDDの確認
fdisk -l
# フォーマット
umount -a /dev/sda
mkfs -t ext4 /dev/sda
# UUIDの確認
blkid /dev/sda
# マウントディレクトリの作成
mkdir /mnt/hdd
chmod 744 /mnt/hdd
# マウントの記載
vi /etc/fstab
    UUID=<uuid> /mnt/loghdd/rsyslog ntfs defaults 0 0
# 再起動して確認
shutdown -r now
# うまくいかなかったら、以下で調整
mount -a
df -h
sakusaku

SSH接続時にWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!と表示されてアクセス不可時
SSHで接続する際には接続先毎にローカルに情報が保管されるため、中身が別のサーバになったりしていると騙されてる?って怒られることになる。

ssh-keygen -R 172.23.1.3
sakusaku

DNSスレーブサーバーの設定。local内に設定したのでこちらも同じ場所に設置中。

# マスターサーバーの設定変更
# named.conf.optionsに以下を追加
notify yes;
also-notify { 172.23.1.2; };
# named.conf.localにゾーンごとに以下を追加
allow-transfer { 172.23.1.2; };

# スレーブサーバーの設定変更
# BINDのインストール
apt install bind9 bind9utils
# named.cconf.optionsの設定
acl internal-network {
    172.23.1.0/24;
    172.23.10.-/24;
};
options {
    listen-on port 53 { 127.0.0.1; 172.23.1.2; };
    # 内部からの問い合わせ
    allow-query     { 
        localhost;
        internal-network;
    };
    # キャッシュサーバーなので再帰問い合わせ許可(noで使うのは権威サーバー)
    recursion       yes;

    # named.conf.local に追加
    # zoneの名前としてドメイン名を指定
    zone "saku.XXX" {
            # スレーブで操作させるのでslave
            type slave;
            masters { 172.23.1.1; };
            file "slaves/saku.XXX";
            allow-transfer { none; };
    };

    # IPv4逆引き
    zone "1.23.172.in-addr.arpa" {
            type slave;
            masters { 172.23.1.1; };
            file "slaves/1.23.172.db";
            allow-transfer { none; };
    };
};

    # スレーブされたゾーンファイルが書き込めないことがある。permission deniedの場合は以下の設定を追加(apparmorの設定変更)
    vi /etc/apparmor.d/usr.sbin.named
        /var/named/slaves/** rwk,

https://qiita.com/hm7/items/c165836b857ee656b27c

sakusaku

syslogサーバーの設定(rsyslog)

# ★受信側共通
# インストール
apt install rsyslog
# ファイアウォールの許可
ufw allow 514/tcp
ufw allow 514/udp
# 設定ファイル(/etc/rsyslog.conf)の変更
vi /etc/rsyslog.conf
    # MODULES設定
    module(load="imudp")
    input(type="imudp" port="514")
    module(load="imtcp")
    input(type="imtcp" port="514")
        # UDPに限定
    $AllowedSender UDP, 127.0.0.1, 172.23.1.0/24, 172.23.10.0/24
    # GLOBAL設定
    $template recievelog, "/var/log/rsyslog/%HOSTNAME%/%$year%-%$month%-%$day%.log"
    *.* ?recievelog
# 保存フォルダの作成
mkdir /var/log/rsyslog
# 権限の変更
chown syslog:syslog /var/log/rsyslog
# サービスの再起動
systemctl restart rsyslog

# ★送信側の設定
# インストール
apt install rsyslog
# ファイアウォールの許可
ufw allow 514/udp
ufw allow 514/udp
# 設定ファイル(/etc/rsyslog.conf)の変更
vi /etc/rsyslog.conf
    # MODULES設定
    module(load="imudp")
    input(type="imudp" port="514")
    module(load="imtcp")
    input(type="imtcp" port="514")
    # GLOBAL設定(ログ出力先の指定、全ログ対象)
    *.* @172.23.1.2:514
    # 最下部に追記
    action(type="omfwd" Target="172.23.1.2" Port="514" Protocol="udp")
# サービスの再起動
systemctl restart rsyslog

# ログのテスト送信
logger "test log: syslog delivered!"
#ログの確認
tail /var/log/rsyslog/%HOSTNAME%/日付.log

# rsyslogが正常に動作しているか確認
systemctl status rsyslog
journalctl -xeu rsyslog
# rsyslogでエラーが発生していないか確認
rsyslogd -N 1

# /etc/rsyslog.d/50-default.comfの編集
*.*     @172.23.1.2:514

これでもrsyslogのディレクトリ内にホスト名のディレクトリが作成されなかった。
以下の設定を投入したところ作成された。

# ホスト名の変更
vi /etc/hosts
    127.0.0.1 saku-Ubuntu1 localhost.localdomain localhost
    127.0.1.1 saku-Ubuntu1 hostname.domainname
sakusaku

rsyslogのHDDマウントが失敗しすぎてjournalのログが溢れて容量圧迫。
プロセス停止しようとしたが、syslog.socketがアクティブとなり停止できず、以下のコマンドで停止させられた。

journalctl →HDDマウントのパーミッションエラーが連発
systemctl stop syslog.socket rsyslog.service
sakusaku

ディスク容量の空き具合を確認するコマンド。

# ディスクのパーティション単位の空き容量確認
df -h
# ディレクトリごとの容量確認(var内のディレクトリをMB単位で抽出、KBにするなら-m を-kにする、大きいものから10個)
sudo du -m /var/* | sort -rn | head -10
# ディレクトリごと直下以下も削除する
rm -rf /ディレクトリ名
sakusaku

syslogを外付けHDDに出力しようとしていたが、ずっとPermission Deniedと表示されてエラーが止まらなかったが、UbuntuのアプリケーションセキュリティであるAppArmorに弾かれていたと理解。以下の設定投入。

# AppArmorのアプリごとの設定ファイルを確認
ls -a /etc/apparmor.d

# 該当するファイルを開く(パーティション設定はusr.sbin.XXXの中に入れる)
vi /etc/apparmor.d/usr.sbin.rsyslog
    /mnt/loghdd/rsyslog/ r,
    /mnt/loghdd/rsyslog/** rwk,
sakusaku

Ubuntu24.04のタイムゾーン変更

# 現在の状態を確認
strings /etc/localtime
    TZif2
    TZif2
    UTC0 →UTCのままになってる

# タイムゾーンの変更
datetimectl set-timezone Asia/Tokyo
sakusaku

Syslogのログ量が多すぎてラズパイの容量を圧迫しているため、取得期間を変更。

# logrotate.confを編集
vi /etc/logrotate.conf
    # 毎週ごとから毎日ごとに変更
    weekly → daily
    # 最大3日でログを回す
    rotate 4 → rotate 3
    # 圧縮(gz)させる
    compress
sakusaku

Q.すでにデータが入っているディレクトリに、HDDをマウントした場合どのような挙動をする?

A.マウントされたHDDのデータは閲覧できるが、もともとそのディレクトリに入っていたデータは閲覧できなくなる。
今回はデータが入った状態で誤ってマウント→どうしても容量が何やっても減らない→原因はもともとディレクトリに入っていたファイルの容量が大きかった、ということが発生。

ディレクトリパスも、マウントしたものと統合され存在自体が見えなくなってしまうため、データがないことを確認してからマウントしましょう…。

sakusaku

★WindowsServer2025のインストールとADセットアップ

  1. ISOのダウンロードとRufasでのインストール
  2. IPの固定とサーバーホスト名の変更
  3. 「サーバーマネージャー」から「役割と機能の追加」
  4. インストールタイプの選択で「役割ベースまたは機能ベースのインストール」を選択
  5. ローカルサーバーを選択
  6. 「Active Directory ドメインサービス」と「DNSサービス」を選択
  7. インストール開始
  8. 大体40分ぐらい待つ

★Active Directory の設定

  1. 「サーバーマネージャーの右上の通知欄→「このサーバーをドメインコントローラーに昇格します」をクリック
  2. 「新しいフォレスト」を選択し、ドメイン名を指定(今回はsaku.com)
  3. NetBIOS名の指定が必要なので、入力(今回はSAKU、大文字のみ)
  4. オプションで「DNSサーバー」にチェックが入っていることを選択
  5. Windows Server2025 の機能レベルを選択
  6. インストールを実施

★DNSサーバーの設定

  1. サーバーマネージャーのDNSを開き、「前方参照ゾーン」で新しいゾーンが作成されているかを確認(後方確認ゾーンは作成されない)
  2. コマンドプロンプトからnslookup saku.comで名前解決が行われるか確認

★クライアント端末からドメイン参加

  1. ネットワーク設定からDNSサーバーをADサーバーのIPに設定(今回は172.23.1.9)
  2. システムの詳細設定から「コンピューター名」のタブへ移動し、変更からドメイン名を入力(saku.com)
  3. OKもしくは適用を押し、サーバー側のDomain Adminsアカウントを入力
  4. 成功すればOK

★アカウント作成→サインイン

  1. ユーザー一覧から右クリックで新規→ユーザーで作成
  2. ドメイン参加したクライアント端末からサインインし、入れればOK
sakusaku

★PC上のメモリ型番確認(Windows11移行)
wmicが使えなくなったので、

Get-WmiObject -Class Win32_PhysicalMemory