###### tags: `RaspberryPi` `rpi` `Linux` `GlobalIP` `DDNS` `NAT` `NAPT` # RPIをグローバルIPで外部に公開する # 家のルーターを設定 外部からraspberry pi にアクセスするための ポート転送(NAT, NAPTとも)をルーターで設定する ### NATとNAPTの違い https://wa3.i-3-i.info/diff375network.html https://www.geolocation.co.jp/learn/ip/07.html - NAT : 1台専用。グローバルIPにつけたPortを見ない - NAPT : 複数台可能。ポートを見る - NATとNAPTの共通点 - グローバルIPをローカルIPに変換するための設定 - 変換 1. 192.168.1.1にアクセス 2. user : adminでログイン 3. 静的IPマスカレード設定を開く(NAPTのこと) 4. 宛先アドレスは固定したrpiのアドレス、変換対象は自分のWAN側IP 5. TCP 6. 宛先ポートはrpiのポート、変換対象はWAN側ポート ## IPV4パケット設定 あんまり関係なかったっぽい ## 接続 自宅の、同じLANにある機器から接続しようとするとうまく行かない LAN内のWebサーバに接続するには、ローカルIPを使うという決まりらしい https://kajuhome.com/patio_thread/1736.shtml 外部からのアクセスをチェックしたいときは スマホを使おう 1. globalIP を検索 2. globalIP:port で接続 # raspberry pi のファイアーウォール設定 このページのファイアーウォールから https://qiita.com/morinokami/items/aee081085dd679b1ea22 グローバルipにポートを晒す際には、ファイアーウォールは必須 ## iptableの問題の解消 iptablesがうまく動かないせいで ufw コマンドが動作しない https://www.downtown.jp/~soukaku/archives/2019/0728_185332.html raspbianが buster になってから、iptablesの挙動が変わったようなので 依存パッケージを入れる ```bash= sudo update-alternatives --display iptables sudo apt install nftables sudo systemctl mask nftables.service sudo reboot ``` ## ufw でファイアーウォールを設定 ```bash= sudo apt-get install ufw # ufwのインストール sudo ufw allow 80 # ポートの開放 sudo ufw default deny # 許可されたポート以外を閉じる sudo ufw enable # ufwの有効化 sudo ufw status # ファイアウォールの設定を確認 ``` ## DDNSで固定ドメインを家庭のグローバルIPに割当て 仕組み - DDNSのサーバーでドメインを取得 - DDNSのサイトにアクセスすると、アクセス元のグローバルipを検知 - パスワードと取得したドメインを、getパラメータに含めてアクセスすると、グローバルipが変わっていてもドメインでアクセスできる様になる DDNSサービスは、free.ddo.jpを使う (普通のddo.jpは有料サービスなので、必ずfreeをつける) free.ddo.jpにhttpクライアントを投げるコマンドラインツールを作成し、 raspbianの cron で定期的にhttpリクエストすることで更新する dn = ドメイン名 pw = パスワード ```bash= curl "http://free.ddo.jp/dnsupdate.php?dn=raspmax&pw=maxy8821" echo "update DDNS" ``` crontab -e ```bash= 10 * * * * /home/pi/Camera/updateDDNS.sh ``` また、ポートフォワーディングまではサポートしていないので、 ドメイン:port でアクセスする。