[Dev] IPv6アクセス確認

in #japanese10 hours ago

検証内容

  1. サーバにIPv6アドレスを2個割り振り、(学習用)
    どちらも同じポート3000番でプログラムを起動。(別々のプロセス)
  2. クライアントから、IPv6アドレスでサーバへアクセスして、
    指定したIPv6アドレスでリスティングしているプログラムが受信することを確認する。

サーバ側

設定確認

ip -6 addr show enp0s31f6
ip -6 route show dev enp0s31f6
ip -6 neigh
image.png
ルーター
image.png

プログラム起動

bun run server1.ts 240f:54:d80d:1::1
image.png
⇒正常

プログラム起動

bun run server1.ts 240f:54:d80d:1::2
image.png
⇒正常

リスティング確認

ss -ltnp sport = :3000
image.png
⇒正常

外部(Googleサイト)アクセス確認

image.png
⇒正常

テストプログラムソースserver1.ts

import { serve } from "bun";
// 第1引数: hostname
// 第2引数: port
const hostname = Bun.argv[2] || "::";
const port = Number(Bun.argv[3] || 3000);
console.log(`listen: [${hostname}]:${port}`);
serve({
  hostname,
  port,
  fetch: async (req) => {
    const url = new URL(req.url);
    console.log("url.pathname:", url.pathname);
    if (url.pathname === "/hivemind/") {
      const body = JSON.stringify({
        jsonrpc: "2.0",
        id: 0,
        method: "hive.db_head_state",
        params: {}
      });
      const backend = await fetch("http://localhost:8888", {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          "Host": "steememory.com",
        },
        body,
      });
      const data = await backend.text();
      return new Response(data, {
        status: backend.status,
        headers: {
          "Content-Type": "application/json",
        },
      });
    }
    return new Response("Not Found", { status: 404 });
  },
});

クライアント側

接続確認

curl [240f:54:d80d:1::1]:3000/hivemind/
curl [240f:54:d80d:1::2]:3000/hivemind/
image.png
⇒どちらも失敗

設定確認

ip -6 addr show eth0
ip -6 route show dev eth0
ip -6 neigh
image.png
⇒問題なさそう

外部(Googleサイト)アクセス確認

image.png
⇒今回は成功(設定変更はしていないが)

接続確認

curl [240f:54:d80d:1::1]:3000/hivemind/
curl [240f:54:d80d:1::2]:3000/hivemind/
image.png
⇒今回は成功

Sort:  
Loading...