IPv6 IPoE環境で自宅のRaspberryPiにsshできるようにする

公開日時
更新日時

自宅のインターネット回線をIPv6 IPoEに変えた影響で固定のIPv4グローバルIPを持てなくなり、外から自宅のRaspberryPiにアクセスすることができなくなっていた。

回線が速くなるなら仕方ないと思って半ば諦めていたが、以前VPN用に作ったGCPのサーバを経由すればIPv6環境でもアクセスできることが分かったので下記記事を参考に対応した。

GCP設定

  • .ssh/authorized_keys にRaspberryPiユーザの公開鍵を追加

RaspberryPi設定

  • GCPに自動でssh接続するようにsystemd設定を追加
# /etc/systemd/system/ssh_rpfw.service

[Unit]
Description=ssh-reverse-port-forwarding-service
After=network.target auditd.service

[Service]
User=pi
Group=pi
WorkingDirectory=/home/pi
ExecStart=/usr/bin/ssh -oServerAliveInterval=10 -oExitOnForwardFailure=yes -oTCPKeepAlive=no -N -R 3022:127.0.0.1:22 {gcp_user}@{gcp_ip}
Restart=always
RestartSec=1
StartLimitBurst=0

[Install]
WantedBy=multi-user.target
  • 自動起動設定
sudo systemctl daemon-reload
sudo systemctl start ssh_rpfw.service
sudo systemctl enable ssh_rpfw.service

接続元クライアント設定

  • ~/.ssh/config に以下を追加
Host gcp
  HostName gcp_ip
  User gcp_user
  IdentityFile ~/.ssh/gcp
  IdentitiesOnly yes

Host pi
  User pi
  Port 3022
  HostName localhost
  PubkeyAuthentication yes
  IdentityFile ~/.ssh/pi
  ProxyCommand ssh -W %h:%p gcp

これで外部ネットワークからでも ssh pi でRaspberryPiにアクセスできるようになった。


Related #gcp

Cloud Runのコールドスタートを避けるためにcurlで起こし続ける

定期リクエストを送っている間はコールドスタートは発生していないことが確認できた

GCP VMインスタンスのSSHポートを変更した

Network Internet Egress from Americas to EMEA

[Action Required] Internal error has affected services in Cloud Run that use Cloud Load Balancing

デフォルトURLで利用している場合は対応不要

GCPの無料インスタンスがF1-microからE2-Microに変わった

メールが来ていたのを見落としていた

ローカルディレクトリをCloud Storageに同期する

gsutil rsyncを利用した