mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
960 文字
3 分
UbuntuでNATを使ってルーターへネットワークを転送する
2024-12-15

個人的な都合により、まずホストを介してネットワークを取得し、次にそのネットワークを介して転送し、LANケーブルを使ってルータへネットワークを共有します。

以下は解決方法です。

追記:この構成環境はUbuntuを新規にインストールした直後の状態です。環境に保存すべき設定がある場合は、削除されるのを避けるため事前に保存しておくことをおすすめします。

現在のネットワーク状態を確認#

ip addr
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
# link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
# inet 127.0.0.1/8 scope host lo
# valid_lft forever preferred_lft forever
#2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
# link/ether 68:1d:ef:4a:41:4e brd ff:ff:ff:ff:ff:ff
# inet6 fe80::85cf:33e6:14a0:3af6/64 scope link noprefixroute
# valid_lft forever preferred_lft forever
#3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
# link/ether 68:1d:ef:4a:41:4f brd ff:ff:ff:ff:ff:ff
# inet 192.168.0.148/24 brd 192.168.0.255 scope global dynamic noprefixroute enp3s0
# valid_lft 7094sec preferred_lft 7094sec
#4: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
# link/ether bc:2b:02:7c:27:a7 brd ff:ff:ff:ff:ff:ff
#5: enx5a5f0a205236: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
# link/ether 5a:5f:0a:20:52:36 brd ff:ff:ff:ff:ff:ff
# inet 192.168.9.107/24 brd 192.168.9.255 scope global dynamic noprefixroute enx5a5f0a205236
# valid_lft 3421sec preferred_lft 3421sec
# inet6 fe80::86cb:2037:bfdc:9300/64 scope link noprefixroute
# valid_lft forever preferred_lft forever

自分がインターネットへ接続しているインターフェースと、ルータへ接続しているインターフェースを特定します。

ネットワーク設定#

1. Netplan の設定を変更#

  1. 既存の Netplan 設定ファイルをすべて削除する:

    sudo rm -rf /etc/netplan/*.yaml
  2. 新しい基本設定ファイルを作成する:

    sudo nano /etc/netplan/01-netcfg.yaml
  3. 以下を追加して、インターフェースの DHCP を有効にし、ルータに接続する NIC に静的 IP アドレスを設定します:

    network:
    version: 2
    renderer: networkd
    ethernets:
    enp1s0:
    addresses:
    - 192.168.1.1/24
    dhcp4: false
    gateway4: 192.168.1.254
    nameservers:
    addresses:
    - 8.8.8.8
    - 8.8.4.4
    enx5a5f0a205236:
    dhcp4: true
  4. ファイルを保存して退出し、設定を適用する:

    sudo netplan apply

2. ネットワーク設定の検証#

以下のコマンドを実行して、各インターフェースが正しく IP アドレスを取得しているかを確認します:

ip addr
  • 目標状態:
    • 設定したインターフェースは DHCP で IP アドレスを取得すること。

    • ルータのインターフェースには静的アドレスが割り当てられていること。

      以下のコマンドを実行して、enp1s0 に静的 IP アドレスが割り当てられているかを確認します:

      ip addr show enp1s0

      出力には以下が含まれるはずです:

      inet 192.168.1.1/24 scope global enp1s0

3. ルータのネットワーク共有の設定#

私のネットワーク構成では、インターネット接続は enx5a5f0a205236 によって提供され、enp1s0 を介してルータへ共有します:

3.1 IP 転送の有効化#

  1. 一時的に有効化:

    sudo sysctl -w net.ipv4.ip_forward=1
  2. 永続的に有効化: 編集するファイル

    sudo nano /etc/sysctl.conf

    以下の行がコメントアウトされていないことを確認します:

    net.ipv4.ip_forward=1
  3. 設定を適用:

    sudo sysctl -p

3.2 NAT 転送の設定#

  1. NAT 転送ルールを追加:

    sudo iptables -t nat -A POSTROUTING -o enx5a5f0a205236 -j MASQUERADE
    sudo iptables -A FORWARD -i enx5a5f0a205236 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i enp1s0 -o enx5a5f0a205236 -j ACCEPT
  2. ルールを保存:

    sudo apt install iptables-persistent
    sudo netfilter-persistent save
    sudo netfilter-persistent reload

4. DHCP サービスの設定#

ルータの WAN は enp1s0 経由で IP アドレスを取得する必要があるため、DHCP サービスを設定します。

4.1 DHCP サービスのインストール#

インストールする:

sudo apt update
sudo apt install isc-dhcp-server

4.2 DHCP の設定#

/etc/dhcp/dhcpd.conf ファイルを編集します:

sudo nano /etc/dhcp/dhcpd.conf

以下を追加します:

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}

DHCP サービスのインタフェースを指定します:

sudo nano /etc/default/isc-dhcp-server

設定:

INTERFACESv4="enp1s0"

4.3 DHCP サービスの起動#

DHCP サービスを起動して状態を確認します:

sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server

5. ネットワーク共有の検証#

  1. NAT と IP 転送が有効かどうかを確認:

    sudo iptables -t nat -L -v
    cat /proc/sys/net/ipv4/ip_forward
    • NAT ルールが存在することを確認。
    • cat /proc/sys/net/ipv4/ip_forward1 を返す必要があります。
  2. enp1s0 に接続したデバイスでネットワーク接続をテストする:

    • デバイスが DHCP で IP アドレスを取得していることを確認。
    • デバイスがインターネットにアクセスできることを確認。
共有

この記事が役に立ったときは、ぜひ他の人に共有してください!

UbuntuでNATを使ってルーターへネットワークを転送する
https://dreaife.tokyo/jp/posts/ubuntu-nat-routing/
著者
dreaife
公開日
2024-12-15
ライセンス
CC BY-NC-SA 4.0

一部の情報は古い可能性があります

関連した投稿 スマート
1
Ubuntuでoh-my-zshとそのコンポーネントを導入する
prog-side Ubuntuでoh-my-zshと関連コンポーネントを導入する手順として、まずzshとgitをインストールし、次にwgetでoh-my-zshを導入します。その後、powerlevel10kテーマと必要なプラグインをクローンし、.zshrcを更新してテーマとプラグインを適用します。最後にzsh-batやyou-should-useなどの追加プラグインを導入し、システム更新を行って正常動作を確認します。
2
Alibaba CloudでDocker+code-serverを設定してオンラインコンパイラを構築する
cs-base Dockerとcode-serverをインストールしてオンラインコンパイラ環境を構築する手順です。Dockerの導入、Alibaba Cloudミラーの設定、Nginxの起動、code-serverの導入と設定、C/C++のビルド環境構築を行い、最後にテストコードの実行に成功しました。
3
実験1 よく使うネットワークコマンド
cs-base 本実験は、LinuxとWindowsのコマンドライン操作を理解し、ping、ifconfig、traceroute、arp、netstatなどの代表的なネットワークコマンドの基本的な使い方に慣れることを目的としています。ネットワーク接続性の確認、TCP/IP設定の表示、パケット経路の測定、ARPキャッシュの確認、アクティブなTCP接続の確認を行います。実験を通じてコマンドラインの使い方を習得し、OS間で同一機能コマンドのパラメータ差異を理解し、プログラミング能力も向上しました。
4
実験8 WEBサーバーのデプロイと応用
cs-base 本実験は、電子メールシステムの構造、クライアントとサーバーの通信、SMTP/POP3プロトコルを理解することを目的としています。Alibaba Cloud上でNginxとApacheをインストール・デプロイし、静的/動的Webページへのアクセスを実演し、依存パッケージのインストール問題を解決しました。これにより、Linuxでのソフトウェア設定に関する理解とプログラミング能力が向上しました。
5
実験9 暗号化・デジタル署名・証明書
cs-base 本実験は、共通鍵暗号、公開鍵暗号、ハッシュ関数、デジタル署名、デジタル証明書の概念と応用を理解することを目的としています。OpenSSLを用いて、暗号化/復号、鍵ペア生成、デジタル署名、自己署名証明書の作成などを行います。実験中に発生した問題を解決することで、プログラミング能力とLinuxコマンドへの理解を高めました。

目次