Upgrade to Pro — share decks privately, control downloads, hide ads and more …

創明寮のNAT越え奮闘記

 創明寮のNAT越え奮闘記

会津大学 OB/OG LT大会 2021 フリーテーマLT

Yuto Takamune

April 29, 2021
Tweet

More Decks by Yuto Takamune

Other Decks in Programming

Transcript

  1. 創明寮のNAT越え奮闘記
    学部一年 s1290035 高棟雄斗(しんぶんぶん[@shinbunbun_])
    会津大学 OB/OG LT大会 2021

    View Slide

  2. 自己紹介
    - 人間です
    - s1290035(学部一年)
    - AizuGeekDojo SA
    - Zli運営
    - LINE API実践ガイド LINEログイン章 著者
    - Epson Hack Trek2021優勝
    - コミュニティ活動いろいろ
    - 最近やってること
    - 3社並列で仕事 + サークル6個 + 激重PJのPM
    - Nuxt.js、Node.jsを使ったWeb開発
    - AWS使ってインフラ構築
    - ラズパイとかESP32とかで遊ぶ
    - アイデンティティ管理、認証系
    - 最近CTFと競プロを始めた
    - ツイ廃
    - 保有資格: 漢検3級、英検2級、数検2級、応用情報技術者試験
    ポートフォリオ(shinbunbun.info)
    @shinbunbun_sub
    @shinbunbun_

    View Slide

  3. 1ヶ月前の僕の部屋
    今はもうちょい綺麗(なはず ...)

    View Slide

  4. 最近の生活
    平日 休日

    View Slide

  5. 第一章 (ほぼ)無制限なDocker用ストレージを
    求めて

    View Slide

  6. Dockerを使おう
    - ローカルが汚すぎて嫌になった
    - なんかしらんけどnpmとpipが死んだ
    - GitHubのリポごとにDocker立てて開発

    View Slide

  7. ラズパイDocker
    - コンテナ立てすぎてMacの容量たらん...
    - →そうだ、ラズパイに6TBの外付けHDDつないでそこに
    Docker立ててリモートアクセスしよう
    - ついでにVPNサーバを立てることにより、家の外からでもアクセス
    可能に

    View Slide

  8. Ver.1 実家時代

    View Slide

  9. Ver.1 実家時代
    - ラズパイにOpenVPNサーバを立てて、秋葉で買ったジャンクサーバをPKIの
    認証局に
    - サーバ証明書、クライアント証明書を各々のデバイスに発行
    - ラズパイ上でTUNデバイスをシミュレートしてL3でトンネリング
    - クライアントからのユニキャストパケットは全てOpenVPNサーバを経由
    - ポート開放してDDNSを設定
    - ラズパイ上のDockerへはVSCodeのDev Containerを使って接続
    - ほぼローカルのDockerと同じように開発ができる

    View Slide

  10. そして創明寮へ引越し...
    え!?NATあるじゃん!!!!!
    第二章へ続く...

    View Slide

  11. 第二章 そうだ、NAT越えしよう

    View Slide

  12. 検討した案
    1. ngrokでどっかーん
    2. SoftEtherのVPN Azure使えばいい感じにしてくれるらしいからそれを使う
    3. 実家のネットワークにラズパイを接続してそれ経由でアクセスする
    4. VPS立ててそいつを経由させる
    - 条件
    - mDNSを使いたいのでマルチキャストパケットが通るL2ブリッジが良い
    - 部屋にあるPCにVNCでアクセスとかもしたいから、できれば部屋のネットワーク
    に接続したい

    View Slide

  13. 1. ngrokでどっかーん
    論外

    View Slide

  14. 2. SoftEtherのVPN Azure
    - やってみたけど上手くいかなかった
    - なんかしらんけどめっちゃ速度遅い
    - サーバの管理ツールがWindowsしかない
    - (一応Macもあるけど微妙...)

    View Slide

  15. 3. 実家のネットワークにラズパイを接続してそれ経由でアクセスする
    - やってみた

    View Slide

  16. Ver.3 実家経由で接続

    View Slide

  17. Ver.3 実家経由で接続
    - ラズパイが足りなかったので、TP-Linkのルーターに付随しているOpenVPN
    サーバ機能を利用
    - TUNデバイスしか選べないため、IPトンネルしか使えない
    - IPトンネルはL3なのでマルチキャストが通らない
    - DHCPが設定できない
    - 証明書認証が実装できない
    使い物にならん...

    View Slide

  18. 4. VPS立ててそいつを経由させる
    - やってみた

    View Slide

  19. Ver.4 EC2経由で接続

    View Slide

  20. 4. VPS立ててそいつを経由させる
    - AWSのEC2を使用
    - 普通に使うと高いのでスポットインスタンスで
    - クライアントから送信する全トラフィックを転送するように設定
    - フリーWi-Fiとかに繋いだときの暗号化手段としても使いたかったので

    View Slide

  21. しかし...
    - インスタンスの設定を2回間違えて2回ともデータが吹っ飛ぶ
    - EC2嫌になってサヨナラ

    View Slide

  22. Ver.5 Vultr経由で接続

    View Slide

  23. Ver.5 Vultr経由で接続
    - Vultr
    - RAM1GB、SSD25GB、転送量月1TBのインスタンスが月5ドルで使用可能
    - 東京にサーバがある
    - VPNサーバあてのパケットだけを転送
    - サーバのルーティングテーブルの設定がうまくいかなくて、全パケットの転送
    ができなかった
    - これで一応うまくいった

    View Slide

  24. 今後の展望
    - ラズパイだと処理速度が若干遅い&AArch32だと死ぬほど開発しにくい
    - X86で省電力なファンレスPCが欲しい...
    - ラズパイでk8sのクラスタ組みたい
    - ネットワークの知識が足らなすぎるのでネスペをとる
    - 春に申し込んでたけど忙しすぎて受けられなかった
    - ネットワークエンジニアになるかはわからないけど一般教養として知ってお
    きたい

    View Slide

  25. 宣伝①
    - LINE API実践ガイド
    - LINE APIに関する技術が大体全部載ってる
    - 初心者から経験者まで幅広く楽しめる!

    View Slide

  26. 宣伝②(在校生向け)
    - 技術座談会
    - 日時: 5/9(日)13:00〜18:00
    - 場所: 講義棟M5, M6
    - 技術が好きな新入生(or興味がある新入生)と、そんな新入
    生と繋がりたい先輩方を集めて、技術について語り明かす会
    おわり

    View Slide