As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Resolvendo problemas de conectividade de tunelamento AWS IoT seguro por meio da rotação dos tokens de acesso do cliente
Ao usar o tunelamento AWS IoT seguro, você pode ter problemas de conectividade mesmo se o túnel estiver aberto. As seções a seguir mostram alguns possíveis problemas e como você pode resolvê-los alternando os tokens de acesso do cliente. Para alternar o token de acesso do cliente (CAT), use a RotateTunnelAccessTokenAPI ou o. rotate-tunnel-access-token AWS CLI Dependendo se você encontrar um erro ao usar o cliente no modo de origem ou destino, você pode alternar o CAT no modo de origem ou destino, ou em ambos.
nota
-
Se você não tiver certeza se o CAT precisa ser alternado na origem ou no destino, você pode alternar o CAT na origem e no destino configurando como
ClientMode
ALL ao usar aRotateTunnelAccessToken
API. -
Alternar o CAT não prolonga a duração do túnel. Por exemplo, digamos que a duração do túnel seja de 12 horas e o túnel já esteja aberto há 4 horas. Quando você alterna os tokens de acesso, os novos tokens gerados só podem ser usados pelas 8 horas restantes.
Tópicos
Erro de token de acesso do cliente inválido
Ao usar o tunelamento AWS IoT seguro, você pode encontrar um erro de conexão ao usar o mesmo token de acesso do cliente (CAT) para se reconectar ao mesmo túnel. Nesse caso, o proxy local não consegue se conectar ao servidor proxy de encapsulamento seguro. Se você usar um cliente no modo de origem, você poderá ver a seguinte mensagem de erro:
Invalid access token: The access token was previously used and cannot be used again
O erro ocorre porque o token de acesso do cliente (CAT) só pode ser usado uma vez pelo proxy local e, em seguida, torna-se inválido. Para resolver esse erro, alterne o token de acesso do cliente no modo SOURCE
para gerar um novo CAT para a origem. Para obter um exemplo que mostra como alternar o CAT de origem, consulte Exemplo de CAT da fonte alternada.
Erro de incompatibilidade do token do cliente
nota
Não é recomendável usar tokens de cliente para reutilizar o CAT. Em vez disso, recomendamos que você use a RotateTunnelAccessToken
API para alternar os tokens de acesso do cliente para se reconectar ao túnel.
Se você estiver usando tokens de cliente, poderá reutilizar o CAT para se reconectar ao túnel. Para reutilizar o CAT, você deve fornecer o token do cliente com o CAT na primeira vez em que se conectar ao encapsulamento seguro. O encapsulamento seguro armazena o token do cliente, portanto, para tentativas de conexão subsequentes usando o mesmo token, o token do cliente também deve ser fornecido. Para obter mais informações sobre o uso de tokens de cliente, consulte a implementação da referência de proxy local em GitHub
Se você usar um cliente no modo de origem, poderá ver a seguinte mensagem de erro:
Invalid client token: The provided client token does not match the client token that was previously set.
O erro ocorre porque o token do cliente fornecido não corresponde ao token do cliente fornecido com o CAT ao acessar o túnel. Para resolver esse erro, alterne o CAT no modo SOURCE
para gerar um novo CAT para a origem. Por exemplo:
Veja a seguir um exemplo de como executar a RotateTunnelAccessToken
API no modo SOURCE
para gerar um novo CAT para a fonte:
aws iotsecuretunneling rotate-tunnel-access-token \ --region
<region>
\ --tunnel-id<tunnel-id>
\ --client-mode SOURCE
A execução desse comando gera um novo token de acesso à fonte e retorna o ARN do seu túnel.
{ "sourceAccessToken": "
<source-access-token>
", "tunnelArn": "arn:aws:iot:<region>
:<account-id>
:tunnel/<tunnel-id>
" }
Agora você pode usar o novo token de origem para conectar o proxy local no modo de origem.
export AWSIOT_TUNNEL_ACCESS_TOKEN=
<source-access-token>
./localproxy -r<region>
-s<port>
Veja a seguir um exemplo de saída da execução do proxy local:
... [info] Starting proxy in source mode ... [info] Successfully established websocket connection with proxy server ... [info] Listening for new connection on port
<port>
...
Problemas de conectividade com o dispositivo remoto
Ao usar o tunelamento AWS IoT seguro, o dispositivo pode ser desconectado inesperadamente, mesmo se o túnel estiver aberto. Para identificar se um dispositivo ainda está conectado ao túnel, você pode usar a DescribeTunnelAPI ou o AWS CLI describe-tunnel.
Um dispositivo pode ser desconectado por vários motivos. Para resolver o problema de conectividade, você pode alternar o CAT no destino se o dispositivo estiver desconectado devido aos seguintes motivos possíveis:
-
O CAT no destino tornou-se inválido.
-
O token não foi entregue ao dispositivo pelo tópico reservado do MQTT para encapsulamento seguro:
$aws/things/
<thing-name>
/tunnels/notify
O exemplo a seguir mostra como resolver o problema:
Considere um dispositivo remoto,
. Para abrir um túnel para esse item, você pode usar o seguinte comando:<RemoteThing1>
aws iotsecuretunneling open-tunnel \ --region
<region>
\ --destination-config thingName=<RemoteThing1>
,services=SSH
A execução desse comando gera os detalhes do túnel e o CAT para sua origem e destino.
{ "sourceAccessToken": "
<source-access-token>
", "destinationAccessToken": "<destination-access-token>
", "tunnelId": "<tunnel-id>
", "tunnelArn": "arn:aws:iot:<region>
:<account-id>
:tunnel/tunnel-id
" }
No entanto, quando você usa a DescribeTunnelAPI, a saída indica que o dispositivo foi desconectado, conforme ilustrado abaixo:
aws iotsecuretunneling describe-tunnel \ --tunnel-id
<tunnel-id>
\ --region<region>
A execução desse comando mostra que o dispositivo ainda não está conectado.
{ "tunnel": { ... "destinationConnectionState": { "status": "DISCONNECTED" }, ... } }
Para resolver esse erro, execute a RotateTunnelAccessToken
API com o cliente no modo DESTINATION
e as configurações do destino. A execução desse comando revoga o token de acesso antigo, gera um novo token e o reenvia para o tópico do MQTT:
$aws/things/
<thing-name>
/tunnels/notify
aws iotsecuretunneling rotate-tunnel-access-token \ --tunnel-id
<tunnel-id>
\ --client-mode DESTINATION \ --destination-config thingName=<RemoteThing1>
,services=SSH \ --region<region>
A execução desse comando gera o novo token de acesso, como mostrado abaixo. O token é então entregue ao dispositivo para se conectar ao túnel, se o atendente do dispositivo estiver configurado corretamente.
{ "destinationAccessToken": "
destination-access-token
", "tunnelArn": "arn:aws:iot:region
:account-id
:tunnel/tunnel-id
" }