FreeBSDの最近のブログ記事
curlの--dns-serversオプションが通らなかったので、portsをアップグレードしようとしたら既にサポート終了。
どうせなら14.0にしたかったけど、いろいろ動かなくなりそうなので、確実な13.2に上げてみた。
ところがperlとrubyがだいぶ変わっていてあちこち動かないし、そもそもportsupgradeがインストールできなくなった。
それより寝る前にカーネル更新して寝たら、朝起きるとipnatが動かなくなりかなり焦る。
仕方なく1個前のカーネルで立ち上げて朝は過ごすが、他にも動かない内容が多い。
幸い仕事に余裕があったので午後半休で帰らせてもらい、午後は修復に費やした。
ipnatは昔トラブルになったとおりでipfを再コンパイルで通るようになった。
rubyとperlも何とかなったのに、curlのオプションは変わらず通らない。
結局何だったのだろうと言うバージョンアップに。
現在使用しているプロバイダーの固定IPがまた値上げで、老後に備えてコストダウンしないといけないので新たなプロバイダーを契約したら、安かろう悪かろうで速度が全然でない。
仕方なく1カ月で解約することにして、現在のプロバイダーで動的IPにて運用できるようにDNS自動更新をできるだけリアルタイムに送信出来て負荷の無いようなスクリプトを作成して、今後は動的IPで運用してコストダウンしていきたい。
数週間前から自宅サーバーのメールがアクセスできずエラーしていた。
Beckyは大丈夫なのだが、スマホからがエラーしている。
ログを見てもよく分からず...
何とか調べていたら、認証の証明関係と言う事が分かり修正。
#set tls-server-cert-file = /usr/local/etc/letsencrypt/live/hogehoge.mydns.jp/cert.pem
↓
set tls-server-cert-file = /usr/local/etc/letsencrypt/live/hogehoge.mydns.jp/fullchain.pem
中間証明書を含めないサーバー証明書「cert.pem」を指定するとエラーしたので中間証明書を含む証明書に変更
これでエラーせずにアクセスすることが出来た。
前回FreeBSD13.0にバージョンアップした後、DS10U7が格安で手に入ったので、DS67U5を入れ替えることにした。
一度入れなおしているので、また入れるのは楽勝だろうと作業を進めて、今回は何とかカーネルのINET6を無しで何とかipnatまで動くようにできたので昨晩入れ替えした。
しかし最後にsendmailの動作確認をしたら、TLSで送信できなかった。
maillogの表示は
sm-mta[33682]: STARTTLS=server: file /usr/local/etc/letsencrypt/live/miyakoshi.mydns.jp/cert.pem unsafe: World writable directory
TLS以外は動いているので、ここが怪しい。
ファイルやディレクトリーのパーミッションを400などに更新してみたが、変化なし。
まさかとは思ったが、だいぶ上に行って
/usr/local/etc
のパーミッションが775になっていたのが原因だった。
letsencryptを前のマシンからコピーする際に面倒だったので、ディレクトリ以下を圧縮してsambaでコピーした際にパーミッションを広げていたのが影響していた。
しかしこんな上のほうまでパーミッションを見ているとは...
その後、この記事を書くのにMTを動かしたらperlモジュールが足りなくていろいろインストールして、ようやく完全引っ越しが完了。
これでマシンの整理がついた。
コロナ禍で自宅で行える作業がそろそろ無くなってしまうかも...
コロナ禍でお出かけも減ったので、サーバーのバージョンアップをさらに行った。
運よく同型のCPU違いマシンが空いたので、それに入れて構築終わったところでストレージだけ引っ越ししたので、サーバーを止めないでのバージョンアップ。
調べたらFreeBSD11から12あるいは13へもupdateが使えないそうで、ゼロからインストールして構築したのは正解だった。
今年出たばかりのFreeBSD13.0にしたので、しばらくはマイナーアップデートでやっていけるだろう。
FreeBSD11は年内にサポート終了になるし、良いタイミングだった。
しかしMySQLも5.7から8.0にしたら文字コードで苦労した。
詳細は自宅サーバーの構築ページに記載しました。
サーバー一台をFreeBSDからWindowsへ変更しNASとして動かしているのだが、なぜかWindows10のマシンからアクセスできない。
色々調べたらどうもデフォルトでSMBのプロトコルが古いものからだと受け付けない設定になっているようだ。
メインで使用しているマシンはWindows7からのアップグレードだったのでデフォルトでONになっていたようで、こちらのWindows10にはアクセスできていた。
まずは検索から「Windowsの機能の有効化または無効化」で一気に設定したいウィンドウを開いてしまう。
そしてこのSMB1.0のサポートをONすることでWindows7やスマホ、FreeBSDからもアクセスできるようになった。
言い換えるとWindows10しか2.0は対応していないと言う事ではないだろうか?
だいぶ悩んでしまったのでメモとして残しておく。
FreeBSDマシンからWindowsのファイル共有
# mount_smbfs -E UTF-8:CP932 -N //ユーザー名@マシン名/フォルダ /マウントポイント
UTF-8はFreeBSD側の文字コード。
パスワードを聞かれるので、聞かれないようにするためにまず暗号化パスワードを作成
# smbutil crypt パスワード
$$1*****
と$$1で始まるパスワードになるので、これを
/root/.nsmbrc
を作成
中身は
[マシン名:ユーザー名]
$$1*****
と言うファイルを作る。
念のためにパーミッションは400にした。
これでパスワードは聞かれない。
でもfstabだと文字コードが上手く行かないので手動で毎回コマンドを打つかシェルを作成しておくことで対応。
サーバーにDLNAを導入しようとしたが、ファイル名がSJISだと上手くいかない。
EUCもしくはUTF-8なら認識するようなので、一気に文字コードをUTF-8化した。
まずはrootの環境変数
/root/.cshrc
setenv LANG ja_JP.UTF-8
setenv LC_ALL ja_JP.UTF-8
ユーザーの環境変数
/usr/home/ユーザー名/.shrc
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
そしてsambaで過去にSJISで置いたファイルを一度WindowsPCへ移動してからsambaを変更する。
/usr/local/etc/smb4.conf
# unix charset = CP932
unix charset = UTF8
ここが一つ落とし穴で
UTF-8ではなくUTF8で設定
DLNAサーバーのserviioはrc.confで
serviio_lang="ja_JP.UTF8"
と設定すればOK
後日serviioの導入ページは作成することにする。
/!\ ERROR:/!\
Ports Collection support for your FreeBSD version has ended and no ports are guaranteed to build on this system.Please upgrade to a supported release.
No support will be provided if you silence this message by defining
ALLOW_UNSUPPORTED_SYSTEM.
とエラーが出てアップグレードできない。
OSを上げるのは直ぐにできないので、暫定でエラー回避して進ませるため
# setenv ALLOW_UNSUPPORTED_SYSTEM 1
と設定してとりあえずインストール
11.3までは上げられるけど、12は上手くブートできなかったんだよなぁ~
ちょっと時間が無いとトライする時間もないし、今の環境は残したいのでSSDを一つ買ってから行わないと...
この前のAmazonブラックフライデーが安かったときに買っておけばよかった。
いつもipfのルールを書き換えてノーチェックで反映させていた。
記入ミスがあるとデフォルトブロックなのでリモートで修正できない。
いつも仕方なくサーバーを直接触りに行っているが、家ではなく外部からやってしまったら戻せないので、ルールチェックをしてOKなら反映、NGならストップするシェルを作成してみた。
これで記入ミスがある場合は反映されず、正しい場合は自動で反映してくれる。
#!/bin/sh
/sbin/ipftest -r /etc/ipf.rules -i /root/ipftest.rules
if [ $? = 0 ]
then
/sbin/ipf -Fa -Z -f /etc/ipf.rules
else
echo "rule NG"
fi
気が付いたら.htaccessが機能していなかった。
httpd.confで
AllowOverride None
になっていたので
AllowOverride All
に変更。
ついでに.htaccessでローカルIPからの場合はベーシック認証を聞いてこないように修正。
Order Deny,Allow
Deny from all
AuthType Basic
AuthUserFile パスワードファイルの場所
AuthGroupFile グループファイルの場所
AuthName "By Password"
Require valid-user
# BASIC認証不要の設定
Allow from 192.168.0.0/24
# それ以外はベーシック認証へ
Satisfy Any
さらに使っていてphpのREMOTE_HOSTがエラーしていた。
HostnameLookups on
が必要のようだ。
全てに逆引きするとパワーを食うので、必要なファイルのみにする。
カウンター
Today
Yesterday
最近のコメント