Linux」カテゴリーアーカイブ

Raspberry Pi OS bookworm

2023-10-10 にリリースされた bookworm を pi4 で試してみた。

● ssh 接続

Debian 11 (bullseye) からは、問題なく接続可能

Ubuntu 22.04.3 LTS からは、
——————————————————————————–
Unable to negotiate with [ip-address] port 22: no matching host key type found.
Their offer: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
——————————————————————————–
と成り接続不可。

接続側 (Ubuntu) に、 ~/.ssh/config を作成し
rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 を記入すればOK
——————————————————————————–
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
HostKeyAlgorithms ssh-dss,ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
PubkeyAcceptedAlgorithms +ssh-rsa
——————————————————————————–

● VNC-server

ここの Update: Pi OS Bookworm compatibility に記述されてる様に、
現在 Wayland では動作しないので、raspi-config で X11 に切り替えて使用すれば使える。

● Nextcloud

試しに、Nextcloud を構築してみた。 (ver 27.1.2)
php 8.2 で、動作良好

UNIVERGE IX2207 と strongSwan で IPsecVPN

UNIVERGE IX2207 を入手したので、Raspberry Pi 4 との間で IPsecVPN を構築してみた。

● IX2207 設定
とりあえず、WebGUI で出来る範囲で設定

※ keepalive は、WebGUI では設定出来ないので、必要ならコマンドにて設定

● Raspberry Pi4 設定
strongSwan (swanctl) の proposal は、aes256-sha1-modp2048 で可能
iptables を設定後、LAN 間接続良好 (ssh・VNC 等にて確認)

VIA EPIA-M1000 コンデンサー交換

大昔 (20年前) に、CF boot (FreeNAS 06) で 運用してた EPIA-M1000 をジャンク箱で見つけた!
1000μF 8Φ x7 と 1500μF 8Φ x2 が膨張してたので、暇つぶしに交換修理してみた。

PCI接続 RAIDボード (A114-00B) も有ったので
( bios で、1st boot を SCSI 設定すると、このボードから起動出来る )

Debian 11 を STAT-HDD にインストール ( X は NG ) し、動作確認した。

Debian 9 なら X も可能でしたが、動作が遅いので CUI が無難
Debian 10 は、インストール中にエラーで停止

Debian 11 インストール中の画像 (枠の画像が化けてるが問題無い)

試しに Webmin 2.013 を設定してみた。


WOL も、ちゃんと動作するので
必要な時にリモートで起動して NAS の baskup 用に使う事にした。

Raspi で WiFi 中継器

Rasberry Pi zero W と GW-450D KATANA で WiFi中継器 を作ってみた。

内蔵 WiFi は、wpa_supplicant にて既設 WiFi AP に接続
GW-450D KATANA (bullseye で、自動認識) は、hostapd にて WiFi AP を構築
wlan1 (GW-450D KATANA) 側に、isc-dhcp-server を構築
wlan0・wlan1 を iptables 双方向に疎通可に設定
既設 gateway (Router等) に、スタティックルート 設定
これで、UTP の追加敷設なしで、既設 WiFi のエリア外でも LAN 接続が出来る。

※ wlan0・wlan1 間の bridge が出来なかったので NAT 接続

PC Engines APU2C4 Debian Router

APU2C4 は 映像出力が無いので、USB boot + シリアルコンソールで Debian をインストール

debian 10 は、インストール出来なかったので、debian-9.13.0-amd64-netinst.iso を使用
USB メモリに debian-9.13.0-amd64-netinst を書き込む

■ BIOS upgrade
BIOS が古いと、USB boot 出来ないので このサイト を参考に BIOS を upgrade する。

■ USB メモリ からインストール
SD カードを交換、USB メモリを挿して電源 ON
シリアル接続でコマンド実行 (F10 が使える様に xfce4-terminal にて minicom 使用)

F 10 → 1
H (shift + h) → enter
install console=ttyS0,115200n8 (コピペ不可) → enter
space
Language 設定
Location 設定
Country 設定
後は、通常の CLI インストール
再起動

■ コンソールで日本語
# apt install fonts-vlgothic
# dpkg-reconfigure locales

■ 導入した daemon
wvdial
unbound
isc-dhcp-server
strongswan
netfilter-persistent
apache2
vnstat

■ 内部向け Web 表示
zabbix は重いので、vnstat にて traffic をブラウザで確認出来る様にしてみた。

Pi Zero W で LTE Router ( VPN+VLAN )

過去記事の
VLAN WiFi AP
RTX1200-Raspi 間で IPsec VPN – 2
RTX1200-Raspi 間で IPsec VPN – 3
MyDNS.jp の自動更新
Unbound で 内部向け DNS
に、isc-dhcp-server を VLAN 対応で追加して Router を試作してみた。
(試作なので、スループットは無視)
WiFi AP は、自宅内に 2.4GHz 帯の空き ch が無いので、今回は未構築。


余ってた GS908M に、VLAN 2・VLAN 3・VLAN 4 が設定してあったので、そのまま流用。

試験動作は良好ですが、
実運用には pi3 か pi4 で構築しないと使い物にはならないと思われます。

MyDNS.jp の自動更新

更新の手順
自身のグローバルIPアドレスを確認
IPが変化した時だけ MyDNS と IP比較用ファイル を更新
( MyDNS へ過度なアクセスをしない )
※ 更新スクリプトは任意の場所(今回は /home/「user」/ipsend)

● Linux でグローバルIPアドレスを確認する方法
$ curl ifconfig.me
$ curl ifconfig.io
$ curl inet-ip.info
今回は、inet-ip.info を使用

● IP比較用ファイルの初期作成
$ mkdir /home/「user」/ipsend
$ curl -s inet-ip.info > /home/「user」/ipsend/old_ip.txt
$ chmod 666 /home/「user」/ipsend/old_ip.txt

● MyDNS 更新スクリプト

#!/bin/bash

newip=$(curl -s inet-ip.info)
oldip=$(sudo cat /home/「user」/ipsend/old_ip.txt)

if [ "$oldip" != "$newip" ]; then
wget -O - --http-user=「mydns-user」 --http-password=「mydns-passwd」http://ipv4.mydns.jp/login.html
echo $newip > /home/「user」/ipsend/old_ip.txt
fi

exit 0

$ chmod 755 /home/「user」/ipsend/ipsend.sh

● 更新の確認
IPが変化した時だけ MyDNS を更新してるかを確認する為に LOG に書き出す。
# touch /var/log/mydns.log
# chmod 666 /var/log/mydns.log

# MyDNS IP
*/10 * * * * sh /home/「user」/ipsend/ipsend.sh > /var/log/mydns.log 2>&1

# /etc/init.d/cron restart

※ IPが変化し、更新した時だけ下記の用な LOG が書き込まれる。
—————————
ipv4.mydns.jp に接続
 …
`STDOUT’ に保存中
<html>
 …
</html>
 …
stdout へ出力しました
—————————
更新しなかった時は、空ファイルを上書きする。

● 自動更新
試験結果が良ければ LOG 書き出しを停止
( SDカード延命の為、余計な書き込みをしない )

# MyDNS IP
#*/10 * * * * sh /home/「user」/ipsend/ipsend.sh > /var/log/mydns.log 2>&1
*/10 * * * * sh /home/「user」/ipsend/ipsend.sh &>/dev/null

# /etc/init.d/cron restart

RTX1200-Raspi 間で IPsec VPN – 3

Raspberry Pi iptables の設定

※ bullseye では、iptables_raw が install されて無いみたいで
  /etc/iptables が無いので、iptables 情報永続化が出来る
  iptables-persistent を入れると関連ファイルもインストールされる。

# apt install -y iptables-persistent

インストール中に、現在の設定を保存するかと聞いて来るので [はい]
/etc/iptables/ に rules.v4 と rules.v6 の空ファイルが作成される

● iptables 設定
ここのサイトが良く纏まってるので、基本はスクリプトをコピーして使用する。
ページ後半の「まとめ」に有る 最終的に作成したiptablesのルールを一部変更して
iptables.sh を作成。

WAN=ppp0              # ppp0をWAN側の接続とする
LAN=eth0              # eth0をLAN側の接続とする

※ 実際は、pi に設定してる WebServer 公開等も追記してる

スクリプト作成後
$ chmod 755 iptables.sh
$ sudo sh iptables.sh

● iptables 設定変更後の再記録
$ sudo iptables-save | tee /etc/iptables/rules.v4
     or
$ sudo /etc/init.d/iptables-persistent save

● ファイアウォール再起動
$ sudo systemctl restart iptables.service
     or
$ sudo /etc/init.d/iptables-persistent reload

● 接続確認
RTX 配下の LAN から、pi 配下の LAN へ ping・VNC・samba の接続良好

RTX1200-Raspi 間で IPsec VPN – 2

Raspberry Pi の設定

pi2 (余り物)
OS = bullseye
WAN = L-03F (wvdial 設定済)
DDNS = MyDNS.jp (取得済)

● strongSwan

# apt install strongswan
# apt install strongswan-swanctl

● swanctl conf
任意名.conf を作成

connections {
    gw-gw {
        version = 1
        mobike = no
        local_addrs = [Pi側 DDNS FQDN]
        remote_addrs = [RTX側 netvolante DNS FQDN]
        proposals = aes128-sha256-sha1-modp2048,default
        local {
            auth = psk
            id = [Pi ローカルIP]
        }
        remote {
            id = [RTX ローカルIP]
            auth = psk
        }
        children {
            net-net {
                esp_proposals = aes128-sha256-sha1-modp2048,default
                local_ts = [Pi 側 ローカルネットワーク/**]
                remote_ts = [RTX 側 ローカルネットワーク/**]
                mode = tunnel
                start_action = start
                close_action = start
                dpd_action = start
            }
        }
    }
}
secrets {
    ike-1 {
        id = [Pi ローカルIP]
        secret = "[認証鍵]"
    }
}

[ ] = 不要
※ RTX1200 WebGUI 設定では sha1 しか対応してないので
  proposals に -sha1- を記入しないと接続出来ない。

● 起動時に swanctl を読み込む

charon {
 ... 省略 ... 
 start-scripts {
   swanctl = /usr/sbin/swanctl -q
 }
 ... 省略 ... 
}

● forwarding

#net.ipv4.ip_forward=1
	     ↓
net.ipv4.ip_forward=1

● 起動・停止

# systemctl start strongswan-starter.service
# systemctl stop strongswan-starter.service
# systemctl enable strongswan-starter.service

● 接続確認

# swanctl -l

これで、[RTX1200] – [raspi] は接続出来たが
pi 側で、iptables を設定しないと raspi 配下の
ネットワークには到達出来ない。

RTX1200-Raspi 間で IPsec VPN – 1

RTX1200 の設定

ドメインは、NetVolante DNS を取得
conf を書き換える方法は結構有るので、今回は WebGUI で IPsec VPN を構築してみた。
まず、事前に Pi 側の DDNS を取得(このサイトなどを参考に)
MyDNS.jp の更新は この記事を参考に!

● IPsec 追加
管理者向けトップページ →
ルーター機能 → IPsec → 新しい接続先の登録 → 新規登録 → 詳細設定
トンネル名:任意
認証鍵:任意
相手のアドレス:Pi 側の DDNS の FQDN
自分のIPアドレス:RTX の ローカルIP

自分側のID:RTX側のローカルネットワークアドレス
相手側のID:Pi側のローカルネットワークアドレス

※ 対 strongswan「IKEキープアライブの設定」は、
「Heartbeat」は yamaha 独自みたいなので、「ICMP」に変更

※ WebGUI からの設定では、IKEv1 で AES128 SAH1-256 なので
認証は、ikev1 aes128 sha1 modp2048 にした。

● パケットフィルター
WAN の[入]側の設定
静的フィルターを確認し、設定されて無ければ下記を追加

フィルター番号:任意
ルール:pass
プロトコル:UDP
アドレス:* → ルーターのローカルIP
ポート番号:* → 500

フィルター番号:任意
ルール:pass
プロトコル:UDP
アドレス:* → ルーターのローカルIP
ポート番号:* → 4500