カテゴリー: Raspberry pi
CATEGORY ARCHIVE
別のアクセスポイントへも接続するために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/70-persistent-net.rules
SUBSYSTEM=="net",ACTION=="dd",DRIVERS=="?*",ATTR{address}=="内蔵wifiのMACアドレス",ATTR{dev_id}=="0x0",ATTR{type}=="1",KERNEL=="wlan*",NAME="wlan0"
SUBSYSTEM=="net",ACTION=="dd",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/wp_supplicant_wlan0.conf
wireless-power off
sudo nano /etc/wpa_supplicant/wp_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/wp_supplicant_wlan1.conf
wireless-power off
sudo nano /etc/wpa_supplicant/wp_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_ddress=設定
static routers=設定
static domain_naame_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も返ってきた 。
おわった。長かった。バンザーイ。
投稿ナビゲーション
実際の理由は不明もルータを変更したところ、ポートフォワーディングを設定してもIPSEC/L2TPでのVPN接続ができなかった。 そこでwireguardを使ってのvpnを設定しなおした。
参考としたサイト
'https://chirashi.twittospia.com/技術/windowsでwireguardを設定する方法/2021-02-26/ 'https://qiita.com/naomori/items/1ee1a314cbdd3010f3ee 'https://asiavp.net/guide/windows/wireguard/
環境
サーバー: raspberry pi (buster) 外部端末: タブレットPC(windows10) ルータ使用: NAT転送(ポートフォワーディング)使用
なお、下記手順中のxxxxxxx,yyyyy,zzzzz,vvvvv, aaaaa, mydomain, 192.168.123.200, 192.168.123.100は自分の環境や設定したい値に合わせること。
サーバー側設定
sudo apt update
sudo apt upgrade
sudo apt install wireguard
mkdir wgkeys
cd wgkeys
umask 077
wg genkey > server_private.key
wg pubkey > server_public.key < server_private.key
wg genkey > client_private.key
wg pubkey > client_public.key < client_private.key
cd
sudo nano /etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo wg-quick down wg0
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo ufw allow aaaaa/udp
wg0.confの内容は
[Interface]
# virtual IP address for server
Address = 192.168.123.200/24
# port for wireguard . any number available
ListenPort = aaaaa
# server_private.key
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxx
# nat mantra
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# client_public.key
PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyy
# virtual IP address in VPN for client
# allowed virtual IP
AllowedIPs = 192.168.123.100/32
タブレット側設定
windows用wireguardソフトをwireguardサイト からダウンロード
次にwindows上でnotepadか何かを使ってconfファイルを作成する。ここではwg1.confとする。
[Interface]
# client_private.key
PrivateKey = zzzzzzzzzzzzzzzzzzzzzzzzzzz
# virtual IP for client
Address = 192.168.123.100/24
[Peer]
# server_public.key
PublicKey = vvvvvvvvvvvvvvvvvvvvvvvvv
# set virtual IP address for VPN server as allowed IPs
AllowedIPs = 192.168.123.200/32,192.168.123.0/24
# set url and port
Endpoint = mydomain:aaaaa
windows用wireguardソフトをインストール&起動し、上記confファイルを読ませる。
その後は、有効化や無効化で制御可能
その他
ルータでポートaaaaa/udpをポート転送できる様にする。
投稿ナビゲーション
LAN内専用のメールサーバーは構築していたが、LAN外からメールを受信できれば、用途が広がる。 そこで、sslをサポートし、また帰宅後も再度PCでメールを見れるようにIMAP形式のメールサーバーを構築する。 なお、外部からメール受信には外部メールサービスを使うpush方式と、自ら見に行くpull方式があるが、まずはpull方式とした(gmailサーバー等をリレーしない)
※まだ、おかしいところがあるかも。いったんメモとして公開する。
構築イメージ
参考としたサイト
How to set up a mail server on your Raspberry Pi?
(Roundcubeを使う部分は実装せずにすました。 また、ENNABLE IMAPSの箇所で一部設定変更)
OpenSSL で SSL 自己証明書を発行する手順 先の参考サイトではdovecot.pemを使うとなっていたが、それだとエラーになったため。自己証明書ではなく本当はletsencryptを使うのが良いが、別のサーバーでテストしていたため自己証明書で行った。
インストールとテンプレート準備
sudo apt install postfix
sudo nano /etc/postfix/main.cf
sudo apt install mailutils
sudo apt install dovecot-imapd
sudo maildirmake.dovecot /etc/skel/Maildir
sudo maildirmake.dovecot /etc/skel/Maildir/.Drafts
sudo maildirmake.dovecot /etc/skel/Maildir/.Sent
sudo maildirmake.dovecot /etc/skel/Maildir/.Spam
sudo maildirmake.dovecot /etc/skel/Maildir/.Trash
sudo maildirmake.dovecot /etc/skel/Maildir/.Templates
ssl用自己証明書作成
makedir ssls sudo openssl genrsa 4096 > ssls/server.key openssl req -new -key ssls/server.key > ssls/server.csr openssl x509 -req -days 365 -signkey ssls/server.key < ssls/server.csr >ssls/server.crt
3つ目のserver.csrを作成するところで出てくる質問には例えば以下の様に答える JP 都道府県名 区名/市名/郡名 など 組織名等 単に改行 ドメイン名(例: example.com) その後の質問は改行でかまわない
場所移動 sudo cp ssls/* /etc/dovecot/private
postfixの設定
ポート番号の設定、ドメイン名の設定、ネットワークの指定等を行う
sudo nano /etc/postfix/main.cf
myhostname = example.com
mydomain = example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
inet_protocols = ipv4
home_mailbox = Maildir/
# 以下追加
mailbox_command =
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
check_helo_access hash:/etc/postfix/helo_access
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
sudo nano /etc/postfix/helo_access
aaa.bb.cc.ddd REJECT # aaa.bb.cc.ddd はexample.comのIPアドレス
# example.com REJECT
smtp.example.com REJECT
mail.example.com REJECT
sudo nano /etc/postfix/master.cf
587 inet n - y - - smtpd #smtpを587にした
sudo service postfix restart で、postfixを起動
dovecotの設定
sudo nano /etc/dovecot/dovecot.conf
sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = ~/Maildir
sudo nano /etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
sudo nano /etc/dovecot/conf.d/10-ssl.conf
ssl = yes ssl_cert = </etc/dovecot/private/server.crt ssl_key = </etc/dovecot/private/server.key ssl_min_protocols = TLSv1.2
ssl = yes
ssl_cert = </etc/dovecot/dovecot.pem # private/ を消すことに注意
ssl_key = </etc/dovecot/private/dovecot.pem # .keyを.pemにすることに注意
ssl_min_protocols = TLSv1.2
sudo service dovecot restart でdovecotを再起動
自分証明書だとおこられるかも。letsencryptので行う必要ありか。
テスト及び実行
※ 下記部分は「自己証明書作成」部分を行った場合は不要
printf '\0%s\0%s' 'testuser' 'password' | openssl base64
cd /etc/dovecot
sudo openssl req -new -x509 -nodes -config /usr/share/dovecot/dovecot-openssl.cnf -out dovecot.pem -keyout private/dovecot.pem -days 365
メーラー側の設定
protocol imap4 smtp認証 しない ssl imap4 sslを使用 smtp sslを使用しない smtp ポート番号 587 IMAP ポート番号 993 コードはutf-8にする。(文字化けするので) 2021/3/31追記
自己証明書なので信頼できないといわれるが、許可して受け入れると受信可能となる。
※ smtp側を開けていないとほとんどのメーラが使えない。 windowsだとSylpheedは使えた。 androidだとOpen Mailが使えた(おそらくK-9 Mailも)。 2021/3/31 追記
その他エラー対策
/var/log/mail.err や /var/log/syslogにエラーが出ているのでうまくいかないとき、コマンドでの直接のエラーメッセージの他にここをみてチェック
もし、 key too smallの様なメッセージが出た場合は /etc/ssl/openssl.cnf 中の CipherString = DEFAULT@SECLEVEL=2 の値を1にしてみる
もし、 /dev/urandomでエラーになった場合は、 /usr/share/dovecot/dovecot-openssl.cnf 中のRANDFILE = /dev/urandom部分をコメントアウトしてみる。 ついでにkey長を4096にするのが良い
投稿ナビゲーション
Raspberry pi 2B v1.1で、SDHCでブートし、以降HDDを使う設定にしたが、何かの拍子で(おそらくrebootで)sudoが無効になってしまった。 例えば、sudoで行っているのに読み込み専用ファイルですとかのエラーが出る。
対応
sudo mount -o remount,rw / を実行すると、(一部エラーの表示がでるが)復活した。
SDHCで立ち上がっている?
※ /etc/rc.localに記述してもダメ また、systemctl --failed で見てみると、xrdpやpostfix, dovecot 他 が立ち上がっていない。 /etc/fstabに書いたがそこが読まれなかったのか?
投稿ナビゲーション