V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

カテゴリー: Raspberry pi

CATEGORY ARCHIVE

apt updateで「クリアサインされたファイルが有効ではなく、'NOSPLIT' を得ました」出力し失敗

トラブル

apt updateコマンドで、エラーとなり「クリアサインされたファイルが有効ではなく、'NOSPLIT' を得ました (認証にネットワークが必要?)」との情報が出力された。

原因調査

ネットで調べたところ、deb用のソースが消えていたり期限切れの可能性がある事が分かった。
そこで、sudo apt-key list を実行したところ期限切れと表示されるものがあった。

仮処置

/etc/apt/sources.list 又は /etc/apt/source.list.d 内の期限切れのsourceの部分をコメント化した。 一応っこれで、apt updateは実行できる様になった。

正式な対処は、OSを含めアップデイトする事である(が、各アプリケーションの中身の更新が大変)

wake on lanの実現方法の一つ

背景

wake on lan(以降wol)を、機種変前のスマホを使って実現しようとしていたが外出中にスマホがスリープ?してしまい、外出先からwolが出来ない。そこでスマホを使わずraspberry pi(以降raspi)を使う別の方法を考えた。

前提条件 

  • raspiにsylpheedがインストール済み
  • sylpheedから周期的にポーリング受信可能なメールアドレスあり(私の場合自宅サーバー上)
  • raspiにwakeonlanがインストール済み

sylpheedでの設定

sylpheedでメッセージ受信したらコマンド実行 に一般設定で設定する
例:

/home/pi/tools/wolmail.sh

他に、2分ごとにメールをチェックする様にした。自宅サーバーでなければ、5分ごととかもう少し間隔を長めにした方が良いかもしれない。 起動までに時間がかかるが。

メール受信時に実行するシェル

wolmail.shを以下の様にした。試行錯誤で書いたものなので効率の良くないコードではあるが。

#!/bin/bash

ls -trl /home/pi/Mail/inbox | tail -1  >/home/pi/logs/wolsh.log

cat /home/pi/logs/wolsh.log | awk  '{printf("/home/pi/Mail/inbox/%s\n",$9)}' >/home/pi/logs/woltemp
prefile=/home/pi/logs/woltemp

while read filename
do
 cat $filename |awk -f /home/pi/tools/wolmail.awk

done < ${prefile}

wolsh.log、woltempは作業用のファイル

Pathは、念のためフルパスで記述。 sylpheedの受信メールはMail/inboxにあった。最新のものを使用。9番目のフィールドが該当メールのファイル名(数字)であった。

wakeonmailするためのawkスクリプト

awkスクリプトを、wolmail.awkとして下記の様に作成した。

BEGIN{
}
{
if (NF >=2 ) {
  if ($1 == "wolkeyword")  {
   for (i=2;i<=NF;i++) {
      if ($i=="aaaaa") system("/home/pi/tools/wol-aaaaa.sh")
      if ($i=="bbbbb") system("/home/pi/tools/wol-bbbbb.sh")
      if ($i=="ccccc") system("/home/pi/tools/wol-ccccc.sh")
  }

  }
 }
}
END{
  print "wol sent end" > "/home/pi/logs/wol_mail_status"
}

wol-xxxxx.shは、wakeonlanコマンドのためのシェル

また、上記は3台に対応

wol用のメール

subjectもしくは本文内に、wolkeyword xxxxx の様に記述してメールする事で良い

lan内でのmailは可能にしていたが、lan外からは出来ていなかった。それへ対応

問題点

lan外にmailしようとしたところ、relay access deniedとなって送信拒否された。
smtp認証が必要との事。 そこでsmtp認証を追加した。

smtp認証追加

main.cfに認証用設定追加

sudo nano /etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_service = smtp
smtpd_sasl_type = dovecot
smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unautcheck_client_access hash:/etc/postfix/reject_client,
  reject_unauth_destination

reject_clentが無いとエラーになったので作成

sudo nano /etc/postfix/reject_client

設定を反映
sudo /usr/sbin/postmap /etc/postfix/reject_client
出来たことを確認
ls -la /etc/postfix/reject_client.db

SMTP認証用のソフトが足りなかったので、追加インストール

sudo apt-get install sasl2-bin

 sudo sasldblistusers2
 sudo chgrp postfix /etc/sasldb2
 sudo chmod 640 /etc/sasldb2
 #sudo mv sasldb2 sasldb2_org
 ls /etc/sasldb2

master.cfのsmtp認証設定の確認

 sudo nano  /etc/dovecot/conf.d/10-master.conf
 
 service auth {
   # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group=postfix

補足:忘れていたのでパスワード再設定

 sudo passwd -d username
 sudo passwd  username

別のアクセスポイントへも接続するためにwifi usbドングル購入しwlan1を追加した

背景

raspiをwifiルーターとvpnサーバーにwifi接続して、外部からwifiルーター配下の機器に接続しようとした。そのため、raspiにwifi接続用ドングルを購入しwlan1として追加した。 なおwlan0は内蔵のwifi。

手順

  • ドライバーの導入  別記事を参照
  • MACアドレスの調査: 内蔵wifiチップ及びUSBドングルそれぞれのMACアドレスを確認する
  • wlan0,wlan1の固定: 内蔵のものをwlan0、USBのものをwlan1として固定する
  • wlan0用及びwlan1用のwpa_supplicantを用意
  • リブート

wlan0,wlan1の固定とwpa_supplicant

sudo nano /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="内蔵wifiのMACアドレス",ATTR{dev_id}=="0x0",ATTR{type}=="1",KERNEL=="wlan*",NAME="wlan0"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="wifi用USBのMACアドレス",ATTR{dev_id}=="0x0",ATTR{type}=="1",KERNEL=="wlan*",NAME="wlan1"

※ NAMEの設定のところは"="が一個であある事に注意。気づかず2つにしてしまって動かず苦戦した

sudo nano /etc/network/interfaces.d/wlan0

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant_wlan0.conf
wireless-power off

sudo nano /etc/wpa_supplicant/wpa_supplicant_wlan0.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
   ssid="接続するSSIDを記述"
   psk="パスワードを記述"
   key_mgmt=WPA-PSK
}

sudo nano /etc/network/interfaces.d/wlan1

auto wlan1
allow-hotplug wlan1
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant_wlan1.conf
wireless-power off

sudo nano /etc/wpa_supplicant/wpa_supplicant_wlan1.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
   ssid="接続するSSIDを記述"
   psk="パスワードを記述"
   key_mgmt=WPA-PSK
}

sudo nano /etc/dhcpcd.conf

~
interface wlan0
static ip_address=設定
static routers=設定
static domain_name_servers=設定

参考にさせていただいたwebページ

AP作成用だが参考になった https://eetimes.itmedia.co.jp/ee/articles/2003/25/news029_4.html

こちらの方のも参考にっせていただいた

TP-LinkのTL-WN725Nを購入したがドライバーなくて苦労したのでメモ

環境

raspi : raspberry pi 4B , OSはraspi OS

uname -r: 5.10.103-v8+

wifiデバイス : TP-Link TL-WN725N (chip set: rtl8188eus)
       同等品 Elecom WDC-150SU2MBK

経緯

TL-WN725Nを接続しても動作せず

webを検索していろんなものを試すが、動作しない、もしくはmakeできない

Firmware及びkernelをraspi-updateにて更新する。 6.1.54-v8+ になった。

動作しない。 makeできない。makeはheaderが無い事によるものの模様。headerがなくinstallできない  rpi-sourceもだめ

sudo rpi-update next 実行後 リブートすると 6.1.10-v8+ となった。これでで動くようになった, ドライバーはr8188eu

V6プラス光回線でのVPNの設定までに、様々な問題に直面した。その顛末を残す。

前提となるネット環境

回線は、V6プラスセッションと固定IP(ipv4)セッション。V6プラス回線側にもraspberry piを接続し、そのraspiにwireguardでVPNを設置する。自宅外からVPN接続は、喫茶店のフリーwifiもしくはスマホ経由のテザリングを利用して自宅raspiに接続する事を想定している。

ONU: PR-S300SE ルーター: Aterm WG2600HS2 mobile sim: IIJmio (ipv6可能)

IPv4でwireguard設定トライとNG数々

wireguardを設定し、自宅では接続できたが、自宅外から試すもpingが返ってこない。 ここから、数々の試行が始まる。

・ルーターをオートecoモードにしていたせいでは?
  ecoモードを無効にする。  ==> NG:変わらず

・raspi側でwifi落としているのでは?
  raspiのpowerマネジメントをオフにする => NG:変わらず

・通信していないと切断されるのでは?
  2分ごとにpingを送ってみる   ==> NG:変わらず

・別の部屋に置いていたので電波強度が弱いとうまく行かない?
  電波強度を50%から100%に戻す   ==> NG:変わらず

・5G wifiだと切断されるのでは?
  2.5G wifiに変えてみる   ==> NG:変わらず

・念のためwifi切断があればリンクアップする
  ping返らなければリンクアップ   ==> NG:変わらず
  ※リンクアップ記録とっても発動なし

・wifiをあきらめて有線接続では?
  有線接続に変更      ==> NG:変わらず 

帰宅後、ルータに繋がっているwindowsPCを起動してみる   ==> 接続:変化あり 

帰宅後、raspiから外部(8.8.8.8)へping           ==> 接続:変化あり

・そもそもwireguard用udpが届いているか?
  ufw logでudp届いているかチェック           ==>NG: 届いていない
  (sudo ufw logging mediumが必要だった)


ipv6ではどうか?      ==>届いている              

個人的見解その1

V6プラスでは一定時間外部へのアクセスが無いと、受信時IPv4へ変換する機能を停止しているのではないか。そのため、自宅へ繋がらない

この個人的結論の後、wireguardをipv6で運用を目指す事に方針変更した

IPv6でwireguard設定トライとNG数々

IPv6でwireguardを設定した。自宅wifiではwireguard接続はうまく動いた。 しかし、自宅外からトライすると、pingが返らない。 以降、新たな数々の試行が始まる。

・そもそも自宅からテザリングではどうか?    ==>NG:状況変わらず

・ファイアウォールやフィルタリングのため?
  ファイアウォールとフィルタリングを切る   ==>NG:状況変わらず

・クライアント側wireguardソフトで受信パケット0B

・調べる方法が残り少ない
  wiresharkでクライアント側を調べてみる     ==>Handshake request以降見当たらず

  wiresharkでサーバー側を調査           ==>Handshake requestを返している

・もしかして一時ipv6アドレスが関係?
  一時ipv6アドレスの使用を止めてみる        ==>NG:状況変わらず(wiresharkでも)

個人的見解その2

契約しているモバイルネットワーク経由では、フィルタリングか何かされておりHandshake responseは中継されない

暫定処置

 raspiから定期的に外部へアクセスし、IPv4でwireguard接続を行う

 宛先としては、他者に迷惑をかけないように、自宅固定IP(IPv4)アドレス内のサーバーへ、「nping -c 1 アドレス」をcronで行う。

結果

やった。ようやく自宅外からwireguard接続でき、pingも返ってきた

おわった。長かった。バンザーイ。

V-antena and Tanimoto's page

あなたはIPv4でアクセスしています