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?

Ubuntu同士のインターネット接続共有設定

Posted at

2台のUbuntu22.04で、

  • Ubuntu_A: wlan0(DHCP)でインターネットに接続、eth0(192.168.123.20)でUbuntu_Bに接続
  • Ubuntu_B:eth0(192.168.11.18)でUbuntu_Aに接続

のように接続している場合に、Ubuntu_BUbuntu_Awlan0経由でインターネットに接続するように設定する手順です。

1. Ubuntu_Aにインターネット共有設定を作成

パケット転送の有効化:

bash
sudo nano /etc/sysctl.conf

/etc/sysctl.confファイルで以下の行のコメントアウトを外すか追加:

/etc/sysctl.conf
net.ipv4.ip_forward=1

/etc/sysctl.confファイルを変更したら適用:

bash
sudo sysctl -p

iptablesでNATルールを設定する。
wlan0がWi-Fiによるインターネット接続、eth0が有線LANによるUbuntu_Bとの接続

bash
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptablesルールを永続化するため、iptables-persistentをインストール:

bash
sudo apt update && sudo apt install iptables-persistent

現在のルールを保存:

bash
sudo netfilter-persistent save

現在のルールを永続化(再起動しても有効になる):

bash
sudo systemctl enable netfilter-persistent

2. Ubuntu_Aeth0のIPアドレスを固定化

https://www.mulong.me/tech/linux/netplan-wifi-static-ip-ubuntu/ を参考に下記のコマンドでNetworkManagerの接続設定を実施。

bash
sudo tee /etc/netplan/99-config.yaml > /dev/null << EOF
network:
    version: 2
    renderer: NetworkManager
    ethernets:
        eth0:
            dhcp4: false
            optional: true
            addresses:
                - 192.168.123.20/24
EOF

権限を設定:

bash
sudo chmod 600 /etc/netplan/99-config.yaml
sudo chown root:root /etc/netplan/99-config.yaml

設定を反映:

bash
sudo netplan apply

3. (オプション)Ubuntu_AにDHCPサーバーを設定

Ubuntu_Bに自動でIPアドレスを割り当てたい場合は、Ubuntu_AにDHCPサーバを設定する

bash
# DHCPサーバーをインストール
sudo apt install isc-dhcp-server

# 設定ファイルを編集
sudo nano /etc/dhcp/dhcpd.conf

以下を追加:

/etc/dhcp/dhcpd.conf
subnet 192.168.123.0 netmask 255.255.255.0 {
  range 192.168.123.2 192.168.123.19;
  option routers 192.168.123.1;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

DHCPサーバーのインターフェースを指定:

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

以下を設定:

/etc/default/isc-dhcp-server
INTERFACESv4="eth0"

DHCPサーバーを起動:

sudo systemctl enable isc-dhcp-server
sudo systemctl start isc-dhcp-server

4. Ubuntu_B側のeth0設定

Ubuntu_B側のeth0の設定を修正する。

/etc/netplan/*.yamlのファイル名はすでにある実際のファイル名に修正する。
無ければ/etc/netplan/99-config.yamlなどのファイル名で新規に作成

bash
sudo nano /etc/netplan/*.yaml
/etc/netplan/*.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    eth0:
      addresses:
        - 192.168.128.18/24
      gateway4: 192.168.128.20
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

設定を反映:

sudo netplan apply

ここまで設定すれば、Ubuntu_BUbuntu_A経由でインターネットに接続できる状態になる。

5. Ubuntu_B側で接続確認

Ubuntu_B側でコマンドを実行した結果、下記のような応答が確認できれば正しく設定できている

1. ルーティングテーブルを確認

ip route show

# 結果(重要な部分のみ抜粋。デフォルトルートが1つだけになることを確認)
default via 192.168.128.20 dev enp4s0 proto static metric 100
192.168.128.0/24 dev enp4s0 proto kernel scope link src 192.168.128.18 metric 100 

2. Ubuntu_Aへの接続テスト

ping -c 3 192.168.128.20

# 結果(Ubuntu_Aへのpingが正常)
PING 192.168.128.20 (192.168.128.18) 56(84) bytes of data.
64 bytes from 192.168.128.18: icmp_seq=1 ttl=64 time=0.242 ms
64 bytes from 192.168.128.18: icmp_seq=2 ttl=64 time=0.227 ms
64 bytes from 192.168.128.18: icmp_seq=3 ttl=64 time=0.214 ms
--- 192.168.128.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2075ms
rtt min/avg/max/mdev = 0.214/0.227/0.242/0.011 ms

3. 外部インターネットへの接続テスト

ping -c 3 8.8.8.8

# 結果(外部サーバー(8.8.8.8)へのpingが正常)
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=11.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=11.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=112 time=11.4 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 11.214/11.385/11.536/0.132 ms

4. DNS名前解決の確認

ping -c 3 google.com

# 結果(google.comの名前解決が正常に動作)
PING google.com (142.251.222.14) 56(84) bytes of data.
64 bytes from nrt13s71-in-f14.1e100.net (142.251.222.14): icmp_seq=1 ttl=112 time=14.4 ms
64 bytes from nrt13s71-in-f14.1e100.net (142.251.222.14): icmp_seq=2 ttl=112 time=14.5 ms
64 bytes from nrt13s71-in-f14.1e100.net (142.251.222.14): icmp_seq=3 ttl=112 time=14.4 ms
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 14.407/14.436/14.467/0.024 ms

5. systemd-resolvedの設定確認

resolvectl status

# 結果(DNS設定: 8.8.8.8と8.8.4.4が正しく設定されている)
Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (enp4s0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
       DNS Servers: 8.8.8.8 8.8.4.4

以上

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?