0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JoolでNAT64を実装する

Last updated at Posted at 2024-10-01

はじめに

最小の構成をまとめている人が見当たらなかったので備忘録も兼ねての投稿です。

検証環境

  • ホストOS: Windows11 Pro
  • ハイパーバイザ: VMWare Workstation 17 Pro
  • ゲストOS: Ubuntu 24.04 LTS

ネットワーク構成

+---------+          192.168.51.1/24 +--------------+           +-----------+
| IPv4 NW |--------------------------| Ubuntu 24.04 |-----------| IPv6 Host |
+---------+                          +--------------+           +-----------+

インストールと設定ファイル準備

apt update
apt upgrade
apt install jool-tools
mkdir /etc/jool

設定ファイルの編集

# テンプレートとなるファイルをコピーして編集
cp /usr/share/doc/jool-tools/examples/jool.conf /etc/jool
vi /etc/jool/jool.conf

編集前のテンプレートファイルは以下のようになっています

{
	"comment": {
		"description": "Sample full NAT64 configuration.",
		"notes": [
			"192.0.2/24 and 2001:db8::/32 are documentation blocks",
			"(RFC 5737 and RFC 3849), and you WILL need to change or",
			"remove them for your setup."
		],
		"last update": "2022-03-20"
	},

	"instance": "sample-nat64",
	"framework": "netfilter",

	"global": {
		"pool6": "64:ff9b::/96",
		"lowest-ipv6-mtu": 1280,
		"logging-debug": false
	},

	"pool4": [
		{
			"protocol": "TCP",
			"prefix": "192.0.2.1/32",
			"port range": "61001-65535"
		}, {
			"protocol": "UDP",
			"prefix": "192.0.2.1/32",
			"port range": "61001-65535"
		}, {
			"protocol": "ICMP",
			"prefix": "192.0.2.1/32"
		}
	],

	"bib": [
		{
			"protocol": "TCP",
			"ipv6 address": "2001:db8::1#80",
			"ipv4 address": "192.0.2.1#62000"
		}, {
			"protocol": "UDP",
			"ipv6 address": "2001:db8::2#10000",
			"ipv4 address": "192.0.2.1#62000"
		}
	]
}

これを以下のように編集します

{
	"comment": {
		"description": "Sample full NAT64 configuration.",
		"notes": [
			"192.0.2/24 and 2001:db8::/32 are documentation blocks",
			"(RFC 5737 and RFC 3849), and you WILL need to change or",
			"remove them for your setup."
		],
		"last update": "2022-03-20"
	},

	"instance": "default",                            # インスタンス名をdefaultに変更
	"framework": "netfilter",

	"global": {
		"pool6": "64:ff9b::/96",
		"lowest-ipv6-mtu": 1280,
		"logging-debug": false
	},

	"pool4": [
		{
			"protocol": "TCP",
			"prefix": "192.168.51.1/32",              # 自身のIPv4アドレスに変更
			"port range": "61001-65535"               # ポート番号はお好みで
		}, {
			"protocol": "UDP",
			"prefix": "192.168.51.1/32",              # 自身のIPv4アドレスに変更
			"port range": "61001-65535"               # ポート番号はお好みで
		}, {
			"protocol": "ICMP",
			"prefix": "192.168.51.1/32"               # 自身のIPv4アドレスに変更
		}
	]
}

pool6で指定したIPv6プレフィックスの下32ビットをIPv4アドレスのビットで置き換えたアドレスに通信すると、pool4で指定したIPv4アドレスに変換されて通信が可能になります。

サービスの再起動

systemctl restart jool.service

確認

IPv6ホストにて以下の通信が成功する

ping 64:ff9b::8.8.8.8

Ubuntuサーバにて

# インスタンス名の確認
jool instance display

# IPv4プールの確認(なぜか一番上に書いたものしか表示されない)
jool pool4 display

# セッションの確認
jool session display

おわりに

ただのアドレス変換なのでNIC間転送のカーネルパラメータ変更は不要でした。
SIITやらCLATとかPLATとかいろいろあるらしいですがよくわからないのでとりあえず以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?