9
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?

More than 1 year has passed since last update.

NATインスタンスをUbuntuで自作する

Last updated at Posted at 2023-01-07

はじめに

NATゲートウェイをプライベートで使うとなると、料金が少し高いなと思い、NATインスタンスをつくってみた。
調べてみると、AWS公式のNATインスタンスのAMIは、サポートが終了したAmazon Linuxをベースにしている様。

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_NAT_Instance.html
NAT AMI は、2020 年 12 月 31 日に標準サポートが終了した Amazon Linux の最新バージョン 2018.03 に基づいて構築されています。

また、自作するのを調べてみた感じAmazon Linux 2でNATインスタンスを自作するものは多くあったが、UbuntuでNATインスタンスをつくるものはあまり多くなかった気がする。

UbuntuでNATインスタンスが動くところまではできたので記事として残す。
なお、検証したのはUbuntu 22.04。

手順

概ねAmazon Linux2でのNATインスタンスの作成と同じで、違うところは再起動後もiptablesの設定を保持してくれるようにiptables-persistentを使うところ。

他はほぼ同じなので、iptablesに追加するルールのところの192.168.0.0/24ens5は環境に合わせたものにすれば動く(はず)。

$ sudo sh -c 'sysctl -w net.ipv4.ip_forward=1 | tee /etc/sysctl.d/99-sysctl.conf'
$ sudo sysctl --system

$ sudo apt update
$ sudo apt install iptables-persistent -y

$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens5 -j MASQUERADE
$ sudo netfilter-persistent save
$ sudo systemctl enable netfilter-persistent.service

PackerテンプレートにしてAMIを焼いておけば複数の構築も楽かもしれない。
(僕は複数のNATインスタンスが必要なことをやってないので、不要だが...)

# 略...

build {
  sources = [
    # 略...
  ]

  provisioner "shell" {
    inline = [
      "sudo sh -c 'sysctl -w net.ipv4.ip_forward=1 | tee /etc/sysctl.d/99-sysctl.conf'",
      "sudo sysctl --system",

      "sudo apt update",
      "sudo DEBIAN_FRONTEND=noninteractive apt-get install iptables-persistent -y",

      "sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens5 -j MASQUERADE",
      "sudo netfilter-persistent save",
      "sudo systemctl enable netfilter-persistent.service"
    ]
  }
}

Ref

9
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
9
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?