2台のUbuntu22.04で、
-
Ubuntu_A
:wlan0
(DHCP)でインターネットに接続、eth0
(192.168.123.20)でUbuntu_B
に接続 -
Ubuntu_B
:eth0
(192.168.11.18)でUbuntu_A
に接続
のように接続している場合に、Ubuntu_B
をUbuntu_A
のwlan0
経由でインターネットに接続するように設定する手順です。
1. Ubuntu_A
にインターネット共有設定を作成
パケット転送の有効化:
sudo nano /etc/sysctl.conf
/etc/sysctl.conf
ファイルで以下の行のコメントアウトを外すか追加:
net.ipv4.ip_forward=1
/etc/sysctl.conf
ファイルを変更したら適用:
sudo sysctl -p
iptablesでNATルールを設定する。
wlan0がWi-Fiによるインターネット接続、eth0が有線LANによるUbuntu_Bとの接続
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をインストール:
sudo apt update && sudo apt install iptables-persistent
現在のルールを保存:
sudo netfilter-persistent save
現在のルールを永続化(再起動しても有効になる):
sudo systemctl enable netfilter-persistent
2. Ubuntu_A
のeth0
のIPアドレスを固定化
https://www.mulong.me/tech/linux/netplan-wifi-static-ip-ubuntu/ を参考に下記のコマンドでNetworkManagerの接続設定を実施。
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
権限を設定:
sudo chmod 600 /etc/netplan/99-config.yaml
sudo chown root:root /etc/netplan/99-config.yaml
設定を反映:
sudo netplan apply
3. (オプション)Ubuntu_A
にDHCPサーバーを設定
Ubuntu_B
に自動でIPアドレスを割り当てたい場合は、Ubuntu_A
にDHCPサーバを設定する
# DHCPサーバーをインストール
sudo apt install isc-dhcp-server
# 設定ファイルを編集
sudo nano /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サーバーのインターフェースを指定:
sudo nano /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
などのファイル名で新規に作成
sudo nano /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_B
はUbuntu_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
以上