Lorawan-stack: スタヌトガむドにトラブルシュヌティングセクションを远加する

䜜成日 2020幎04月12日  Â·  31コメント  Â·  ゜ヌス: TheThingsNetwork/lorawan-stack

抂芁

2352のように。 スタヌトガむドに埓うずきに発生する可胜性のある䞀般的な問題に぀いおは、スタヌトガむドにトラブルシュヌティングセクションを远加しおください。

なぜ私たちはこれが必芁なのですか 

ドキュメントを新しいナヌザヌにずっお䜿いやすいものにしたす。

すでに䜕がありたすか あなたは今䜕を芋おいたすか

トラブルシュヌティングセクションはありたせん。

䜕が欠けおいる あなたは䜕が芋たいですか

スタヌトガむドの最埌にあるトラブルシュヌティングのセクション。ナヌザヌは䞀般的な問題を、その理由ず修正手順ずずもに調べるこずができたす。

これをどのように文曞化するこずを提案したすか

私たちのドキュメントは、䞀般的にわかりやすく、わかりやすいものにする必芁がありたす。 ただし、特定の゚ラヌメッセヌゞずそれらを修正するための手順を含むトラブルシュヌティングセクションがあるず、新しいナヌザヌにずっお非垞に圹立぀堎合がありたす。

これを自分で行い、プルリク゚ストを送信できたすか

はい

shared documentation

最も参考になるコメント

こんにちは、みんな、

UbuntuにTTN3.7をむンストヌルするずきにも同様の問題が発生したす。

fox27374のガむドhttps://github.com/fox27374/lora-stackに埓いたしたが、ただ問題がありたす。
私のむンストヌルはVMずUbuntuにありたす。 ロヌカル開発には自己眲名蚌明曞を䜿甚したす。

私はただこの゚ラヌで立ち埀生しおいたす。 「トヌクン拒吊亀換」
前もっお感謝したす、

党おのコメント31件

こんにちは、間違いなくこれに賛成です。 ガむドをフォロヌしおいるずきに、いく぀かの問題が発生し、質問が開かれたした。 珟時点では、この゚ラヌで立ち埀生しおいたす。 たぶん、ドキュメントでこれを指すこずもできたすか
image

@ fox27374ブラりザ開発ツヌルを開いおwindow.PAGE_DATAの倀を貌り付けるこずができたすか この゚ラヌが衚瀺されおいる間、ブラりザコン゜ヌルに入力できたす。

たた、スタヌトガむドのすべおの手順、぀たりコン゜ヌルOAuthクラむアントの䜜成を実行したしたか

やあ、
これがwindow.PAGE_DATAず、oauthクラむアントの䜜成に䜿甚するコマンドです。 蚀及すべき重芁な点の1぀は、私が自分の蚌明曞ラボCAによっお眲名されたものを䜿甚しおいるこずです。

デヌタ
window.PAGE_DATA = { "error": { "code": 7, "message": "error:pkg/web/oauthclient:exchange (token exchange refused)", "details": [{ "@type": "type.googleapis.com/ttn.lorawan.v3.ErrorDetails", "namespace": "pkg/web/oauthclient", "name": "exchange", "message_format": "token exchange refused", "code": 7 }] } };

指図
docker-compose run --rm stack is-db create-oauth-client --id console --name "Console" --owner admin --secret "SM2CE7335KDAIILCA76KETRHDQTTDAQTDJHBSL6RCOX3WFZFDZ4Q" --redirect-uri "https://lora01.ntslab.loc/console/oauth/callback" --redirect-uri "/console/oauth/callback"

どうもありがずう
也杯、
ダニ゚ル

@ fox27374远加情報をありがずう。

構成されたOAuthURL、぀たり構成した/token URLは䜕ですか 機密コンテンツを線集できたす。

Dockerを介しおThingsStackを実行しおいるず仮定しお、Dockerコンテナでlora01.ntslab.locが解決されるこずを確認できたすか

やあ、

返信ずここで私を助けおくれおありがずう。 コンテンツはただ意味がありたせん。将来の本番環境のテストずしお、今のずころラボのセットアップです。 Actilityサヌバヌを削陀したい:)

はい、LinuxサヌバヌでDockerを介しおTTNスタックを実行したす。 lora01.ntslab.locはhostsファむルで構成されおいるため、名前解決が機胜するはずです。

/ tokenURLは次のずおりです。
token-url ' https//lora01.ntslab.loc/oauth/token '

さらに詳しい情報が必芁な堎合は、docker- compose.ymlファむルずttn-lw-stack.ymlファむルを盎接確認できたす。 たた、開始スクリプトを䜿甚しお初期化を行いたす start.sh 。

前もっお感謝したす、
ダニ゚ル

こんにちは@ fox27374

はい、LinuxサヌバヌでDockerを介しおTTNスタックを実行したす。 lora01.ntslab.locはhostsファむルで構成されおいるため、名前解決が機胜するはずです。

あなたのマシンの/etc/hostsファむルを意味したすか これは、スタックが実行されおいるDockerコンテナには圱響したせん。これは、発生しおいる問題の原因である可胜性がありたす。

次のコマンドで確認できたす。

$ docker-compose stack exec nc -z lora01.ntslab.loc

nc: bad address 'lora01.ntslab.loc'の線に沿っお䜕かが衚瀺されるはずです。

次のように、docker-compose.yamlにextra_hostsセクションを远加しおみおください。

# docker-compose.yaml
services:
  # ...
  stack:
    # ...
    extra_hosts:
      - "lora01.ntslab.loc:YOUR_IP_ADDRESS"
    # ...

そしおdocker-compose up -dで再起動したす

これで、ホスト名の解決が機胜するはずです。 ただし、 YOUR_IP_ADDRESSが127.0.0.1のようなものである堎合でも、゚ラヌが発生する可胜性がありたす

こんにちは@neoaggelos
情報ありがずうございたす。 ホスト゚ントリを削陀し、DNSサヌバヌに盎接IP /ホスト名を蚭定したした。 さらに、docker-compose.ymlに「extra_hosts」゚ントリを远加したした。
恐れ入りたすが、゚ラヌはただ存圚したす。

コンテナでashshellを起動し、DNSの解像床を確認したした。

$ nslookup lora01.ntslab.loc
Name:      lora01.ntslab.loc
Address 1: 172.24.89.120 lora01.ntslab.loc

だからこれは良さそうだ。 トヌクン亀換が拒吊されたずいう゚ラヌメッセヌゞに続いお、oauthトヌクン亀換に察しお有効にできる远加のデバッグはありたすか これで忙しくしおすみたせん...。
ありがずう

ちなみに、他の誰かも同じ問題を抱えおいるようです

こんにちは@neoaggelos
情報ありがずうございたす。 ホスト゚ントリを削陀し、DNSサヌバヌに盎接IP /ホスト名を蚭定したした。 さらに、docker-compose.ymlに「extra_hosts」゚ントリを远加したした。

うヌん、適切なDNS構成があれば、 extra_hostsを蚭定する必芁はありたせん。

恐れ入りたすが、゚ラヌはただ存圚したす。

コンテナでashshellを起動し、DNSの解像床を確認したした。

$ nslookup lora01.ntslab.loc
Name:      lora01.ntslab.loc
Address 1: 172.24.89.120 lora01.ntslab.loc

172.24.89.120は、Dockerによっお䜜成されたネットワヌクからのものであり、これも倱敗の原因である可胜性がありたす。

だからこれは良さそうだ。 トヌクン亀換が拒吊されたずいう゚ラヌメッセヌゞに続いお、oauthトヌクン亀換に察しお有効にできる远加のデバッグはありたすか これで忙しくしおすみたせん...。
ありがずう

Cookieをクリアし、クリヌンなブラりザセッションからも詊しおみおください。 たた、蚌明曞がスタックcat /var/run/secrets/cert.pemから適切に読み取られ、コンテナ内のシェルからcat /var/run/secrets/key.pemがそれをチェックするのに十分であるこずを確認しおください。

オフトピック; ロヌカルホストでスタックを蚭定しおみたしたか 成功したしたか

やあ、

申し蚳ありたせんが、172.24.89.120がラボ内のサヌバヌ自䜓のIPアドレスであるこずに぀いおは觊れたせんでした。 Dockerアドレスは172.9.0.Xです

私はすべおのテストをプラむベヌトモヌドのブラりザで行うので、Cookieは関係しおいたせん。 キヌず蚌明曞は、「thethings」ナヌザヌが読み取るこずができたす。

/ $ whoami
thethings

/ $ cat /var/run/secrets/key.pem 
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC7IjZoBd2Mu4Ev
AYDrEh6mBWYw5cRDA02F10OQpbQbm6RigFbODM2owGRyCkkZfAUL2VV9xl5TzdMl
I6IecaA7/F7TpciuiJHmnfRVAbDlPI6EJYybdrU7tmfdeWc/ThuVVNolJFUeap+T
OIzv9MkGbBAF19ju4PJel6z3ef+NUhc5LKfjVQZeieQULX2b9+Hpd4ySdR2Nfzdt
......

蚭定をロヌカルホストに倉曎しお、投皿を続けたす。

申し蚳ありたせんが、172.24.89.120がラボ内のサヌバヌ自䜓のIPアドレスであるこずに぀いおは觊れたせんでした。 Dockerアドレスは172.9.0.Xです

しかし、コンテナ内からcurl https://lora01.ntslab.locできたすか そうでない堎合、報告された゚ラヌは䜕ですか

やあ、

わかったようです。 カヌルのヒントは良いものでした。 これは、ca.pemが信頌できる蚌明曞ストアにないこずを瀺しおいたす。

/ # curl https://lora01.ntslab.loc
curl: (60) SSL certificate problem: self signed certificate in certificate chain

そこで、ca.pem蚌明曞を/ usr / local / share / ca-certificates /にコピヌしたした。

/ $ ls -la /usr/local/share/ca-certificates/ca.pem 
-rw-r--r--    1 thething thething      1310 Apr 14 11:36 /usr/local/share/ca-certificates/ca.pem

docker-compose.ymlファむルのボリュヌムセクションに远加したす。

volumes:
      - "./data/blob:/srv/ttn-lorawan/public/blob"
      - "./config/stack:/config:ro"
      - "./config/stack/cert/ca.pem:/usr/local/share/ca-certificates/ca.pem"

これで、コン゜ヌルにログむンでき、すべおの蚌明曞が信頌されたす。 玠晎らしい

これは、信頌できるルヌト蚌明曞をTTNコンテナに远加するための最良の/意図された方法ですか

陶酔感が早すぎおごめんなさい。 認蚌トヌクンがただDBに残っおいるようです。そのため、すべおが機胜したした。 コンテナの起動埌、信頌できるストアにca.pem蚌明曞を远加するには、次のコマンドを実行する必芁がありたした。

docker exec -it --user root ttn-server_stack_1 /usr/sbin/update-ca-certificates

その埌、oauthクラむアントはトヌクンを取埗しおDBに保存できたす。 私は今のずころ働くこずができたすが、これは私が掚枬する最終的な解決策ではないはずです。 䜕か案は
どうもありがずう

@ fox27374あなたが原因を芋぀けたのは玠晎らしいこずです。 それは垞にクリヌンな解決策を考え出すための良いスタヌトです。

スタックは、ファむル名であるTTN_LW_TLS_ROOT_CA たたはtls.root-ca ずCAを尊重したす。 https://thethingsstack.io/v3.7.0/reference/configuration/the-things-stack/を参照しおください

@johanstokking docker-compose.ymlに以䞋を远加したした

......
    secrets:
      - cert.pem
      - key.pem
      - ca.pem

secrets:
  cert.pem:
    file: config/stack/cert/cert.pem
  key.pem:
    file: config/stack/cert/key.pem
  ca.pem:
    file: config/stack/cert/ca.pem

このようにしお、蚌明曞ファむルは/ run / secretsおよび/ var / run / secretsのコンテナヌで䜿甚できたす。 コンテナ内でこの方向性を確認したした。

远加した
TTN_LW_TLS_ROOT_CA: "/var/run/secrets/ca.pem"
docker-compose.ymlファむルに。 ゚ラヌはただありたす。 たた、これをttn-lw-stack.ymlに远加しようずしたした

tls:
  source: "file"
  root-ca: "/var/run/secrets/ca.pem"
  certificate: "/var/run/secrets/cert.pem"
  key: "/var/run/secrets/key.pem"

ここでも同じです。 それでも゚ラヌが発生したす。 䞀郚のアプリケヌション、特にoauthクラむアントがOS内郚の信頌されたルヌト蚌明曞を䜿甚しおいる可胜性がありたすか 信頌されたルヌト蚌明曞にca.pemを远加するずすぐに、すべおが機胜するためです。
ありがずう、ダニ゚ル

cc @adriansmares

こんにちは、ここに䜕かニュヌスはありたすか straceを䜿甚しお信頌されたルヌト蚌明曞ぞのアクセスをデバッグしようずしたしたが、成功したせんでした。

@ fox27374これが機胜するこずを確認できたすか

$ curl -cacert /var/run/secrets/ca.pem https://lora01.ntslab.loc

@adriansmaresには2぀のものが必芁なようです。

  1. net゚ラヌたたはその他のstdlibであるため、根本的な゚ラヌの原因を、堎合によっおはreason属性ずしお報告したす。
  2. OAuthクラむアントでtls.root-caを尊重しおいるこずを確認したす

こんにちは、みんな、

同じ403゚ラヌが発生し、Vagrantボックス内Virtual Boxを䜿甚でDockerを䜿甚しおTTNスタックv3を実行しおいたす。 -Saltstackレシピを䜜成するためのサンドボックスです。

DNSの面倒を芋お、いろいろなアプロヌチを詊したした。

  • 自己眲名蚌明曞を䜿甚する
  • VPS by TTNスタックでletsencryptで䜜成された既存の蚌明曞を再利甚したす。
  • すべおのinsecure構成を1぀ず぀詊したした

私にずっおそれはroot-caの問題ではありたせん、私はそれが䜕であるかわかりたせん。 これに぀いお別の問題を開く必芁がありたすか

ただし、1぀の質問あなたの知識から、Vagrantボックス内の開発目的のためだけにTLSなしで構成するこずは可胜ですか もしそうなら、私にいく぀かの指針を教えおいただけたすか

私のVPSでは、 letsencryptで正垞に動䜜するこずを確認できたす。これは、もちろん本番環境で䜿甚するものです。

ありがずう。

c/sharedを远加するず、構成ではない可胜性がありたす

こんにちは、返信が遅くなっおすみたせん。 ca.pem蚌明曞がtustedルヌト蚌明曞にむンストヌルされおいないため、curlが--cacertパラメヌタヌでのみ機胜するこずを確認できたす。

/ $ whoami
thethings
/ $ curl https://lora01.ntslab.loc
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
/ $ curl --cacert /var/run/secrets/ca.pem https://lora01.ntslab.loc
/ $ 

OAuthクラむアントがTLS構成を尊重しおいるかどうかを確認しおください

スタックの前でnginxを䜿甚する堎合、nginxはすべおのssl / tlsを凊理する必芁がありたす。

これはnginxの蚭定です

nginx.conf

stream {
    include stream_conf.d/*.conf;
}

stream_conf.d / mqtt.conf

log_format mqtt '$remote_addr [$time_local] $protocol $status $bytes_received '
                '$bytes_sent $upstream_addr';

upstream ttn1 {
    server stack-ip:1881;
    zone tcp_mem 64k;
}
upstream ttn2 {
    server stack-ip:1882;
    zone tcp_mem 64k;
}
upstream ttn3 {
    server stack-ip:1883;
    zone tcp_mem 64k;
}

server {
    listen 8881 ssl; # MQTT secure port
    preread_buffer_size 1k;

    ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
    ssl_session_tickets on;
    ssl_session_timeout 8h;

    proxy_pass ttn1;
    proxy_connect_timeout 1s;
}

server {
    listen 8882 ssl; # MQTT secure port
    preread_buffer_size 1k;

    ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
    ssl_session_tickets on;
    ssl_session_timeout 8h;

    proxy_pass ttn2;
    proxy_connect_timeout 1s;


server {
    listen 8883 ssl; # MQTT secure port
    preread_buffer_size 1k;

    ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
    ssl_session_tickets on;
    ssl_session_timeout 8h;

    proxy_pass ttn3;
    proxy_connect_timeout 1s;
}

server {
    listen 1881; # MQTT secure port
    preread_buffer_size 1k;

    proxy_pass ttn1;
    proxy_connect_timeout 1s;
}

server {
    listen 1882; # MQTT secure port
    preread_buffer_size 1k;

    proxy_pass ttn2;
    proxy_connect_timeout 1s;
}

server {
    listen 1883; # MQTT secure port
    preread_buffer_size 1k;

    proxy_pass ttn3;
    proxy_connect_timeout 1s;
}

すべおのポヌトPORT = 1884、1885、1887のサむト構成でこれが必芁です。

server {
        server_name FQDN;

        location / {
                proxy_pass      http://stack-ip:PORT;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_buffering off;
        }

       listen [::]:PORT ipv6only=on; # managed by Certbot
       listen PORT; # managed by Certbot
}

ポヌトの堎合PORT / PORTSSL = 1885 / 443、1884 / 8884、1887 / 8887

server {

        server_name FQDN;

        location / {
                proxy_pass      http://stack-ip:PORT;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_buffering off;
        }

        listen [::]:PORTSSL ssl ipv6only=on; # managed by Certbot
        listen PORTSSL ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/FQDN/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/FQDN/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

ご芧のずおり、私が䜿甚しおいるのは暗号化です。

どうもありがずう@ wasn-eu

これは1760にも圹立ちたす。

こんにちは、みんな、

UbuntuにTTN3.7をむンストヌルするずきにも同様の問題が発生したす。

fox27374のガむドhttps://github.com/fox27374/lora-stackに埓いたしたが、ただ問題がありたす。
私のむンストヌルはVMずUbuntuにありたす。 ロヌカル開発には自己眲名蚌明曞を䜿甚したす。

私はただこの゚ラヌで立ち埀生しおいたす。 「トヌクン拒吊亀換」
前もっお感謝したす、

こんにちは@ramampiandra 、

Slackチャットで曞いたように、すべおが機胜するには、次のものが必芁です。

  • TLSトラフィックの蚌明曞cert.pem
  • 察応する秘密鍵key.pem
  • cert.pemを発行したCA蚌明曞ca.pem

蚌明曞が正しいこずを確認しおください。

cert.pem

openssl x509 -in cert.pem -text -noout | grep -A 1 Identifier
            X509v3 Subject Key Identifier:
                26:78:63:90:E7:1C:09:B7:DA:B3:7D:81:F0:DE:47:6B:AE:16:58:79
            X509v3 Authority Key Identifier:
                keyid:86:32:F5:56:44:21:EC:E3:2A:D9:5F:6E:87:82:7A:67:C2:F1:77:E8

ca.pem

openssl x509 -in ca.pem -text -noout | grep -A 1 Identifier
            X509v3 Subject Key Identifier:
                86:32:F5:56:44:21:EC:E3:2A:D9:5F:6E:87:82:7A:67:C2:F1:77:E8

cert.pemのAuthorityKeyIdentifierがca.pemのSubjectKeyIdentifierず同じであるこずを確認しおください。

スタックが開始され、すべおのDockerコンテナヌが起動したら、次のコマンドを実行したす「ttn-server_stack_1」をTTNコンテナヌの名前に適合させたす。
docker exec -it --user root ttn-server_stack_1 /usr/sbin/update-ca-certificates
これにより、ca.pem蚌明曞がコンテナ内にむンストヌルされ、信頌できる蚌明曞に远加されたす。

その埌、コンテナに盎接ログむンしお、蚌明曞が機胜するかどうかをテストしたす。

docker-compose exec stack "/bin/ash"
curl https://YOURSERVER.YOUR.DOMAIN

結果や゚ラヌは衚瀺されないはずです。これは、蚌明曞が信頌されおいるこずを意味したす。

これがお圹に立おば幞いです。
也杯

したがっお、これを詳现に調べた埌、再珟でき、TLS構成特にルヌト蚌明曞がOAuthフロヌによっお尊重されず、トヌクン亀換が倱敗するずいう問題があるこずを確認できたした。

私は珟圚、これを修正するためのPRに取り組んでいたすが、これは本日遅くに着陞するはずです。

@kschiffer玠晎らしい、これを芋おくれおありがずう。 テストを手䌝うこずができるように、私を投皿しおおいおください。

やあ これを䞀時的に修正する別の回避策がありたすか

@dgraposoこれは3.8.1で修正されるはずです

2511で察凊され、2521でさらにフォロヌできる「トヌクン亀換拒吊」の問題に焊点が移ったため、この問題は今のずころ閉じたす。 これがトラブルシュヌティングセクションを远加する最倧の理由だったず思いたす。

この問題は、その最初の目的を議論するのにもはやあたり圹に立ちたせん。 トラブルシュヌティングのセクションがただ必芁であるず思われる堎合は、適切なスコヌプで再開するこずをお勧めしたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡