ネットワーク設定情報
NICインタフェースを複数持ち、片方をインターネット用、もう片方を内部ネットワークとして設定を行う。
この時インタフェース名称が MAC アドレスから生成されて分かりにくい為、別名に変更を行う。また、内部ネットワークがインターネット可能なように Source NAPT を行う。
役割 | インターネット用 | 内部ネットワーク用 |
物理インタフェース | enx000000aaaaaa | enx000000bbbbbb |
インタフェースの別名 | en0 | en1 |
IPv4 Address | DHCPv4 | 192.168.254.254/24 |
Gateway | DHCPv4 | – |
DNS Server (search) | DHCPv4 | 192.168.254.254 (net.home) |
Static Routes (nexthop) | – | 192.168.64.0/18 (192.168.254.32) |
IPv6 Address | RA | fd00:0:0:fe::fe/64 ※SLAACによる一時アドレス停止 |
Gateway | RA | – |
DNS Server (search) | RA | fd00:0:0:fe::fe (net.home) |
Static Routes (nexthop) | – | fd00:0:0:40::/58 (fd00:0:0:fe::20) |
Source NAT は UFW を使用して行う。このポリシー情報は以下となる。
Action | Source Address | Destination Address | IN Device | |
IPv4 ポリシー | Allow IN | 192.168.0.0/16 | Any | en1 |
Route Allow IN | 192.168.0.0/16 | Any | en1 | |
IPv6 ポリシー | Allow IN | fd00::/8 | Any | en1 |
Route Allow IN | fd00::/8 | Any | en1 |
設定前のハードウェア情報を確認する。
$ sudo lshw -C network -short
H/W path Device Class Description
==========================================================
/0/100/1c.1/0 wlp6s0 network Wireless 7265
/10 enx000000aaaaaa network Ethernet interface
/11 enx000000bbbbbb network Ethernet interface
インタフェース設定
Netplan の config 設定を行う。この時、初期設定ファイルが存在するとインタフェース名でエラーが発生するため、コメントアウトを行う。
【/etc/netplan/50-cloud-init.yaml】
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
version: 2
#ethernets:
#enx000000aaaaaa:
#dhcp4: true
#enx000000bbbbbb:
#dhcp4: true
作成するファイルは適用順番を考慮し、番号を大きくする。この時【accept-ra: false】により、IPv6 固定アドレスに加えて SLAAC による IPv6 アドレス自動構成される事を無効化する。
【/etc/netplan/55-network.yaml】
network:
version: 2
ethernets:
enx000000aaaaaa:
match:
macaddress: 00:00:00:aa:aa:aa
set-name: en0
dhcp4: true
dhcp6: false
accept-ra: true
enx000000bbbbbb:
match:
macaddress: 00:00:00:bb:bb:bb
set-name: en1
dhcp4: false
dhcp6: false
accept-ra: false
addresses:
- 192.168.254.254/24
- fd00:0:0:fe::fe/64
routes:
- to: 192.168.64.0/18
via: 192.168.254.32
- to: fd00:0:0:40::/58
via: fd00:0:0:fe::20
nameservers:
addresses:
- 192.168.254.254
- fd00:0:0:fe::fe
search:
- net.home
設定を反映する。問題なければ制限時間以内に【Enter】キーを押す。
$ sudo netplan try
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 116 seconds
【Enter】
Configuration accepted.
設定が反映されたことを確認する。
$ sudo netplan status
Online state: online
DNS Addresses: 127.0.0.53 (stub)
DNS Search: net.home
● 1: lo ethernet UNKNOWN/UP (unmanaged)
MAC Address: 00:00:00:00:00:00
Addresses: 127.0.0.1/8
::1/128
● 2: en1 ethernet UP (networkd: enx000000bbbbbb)
MAC Address: 00:00:00:bb:bb:bb (Lenovo)
Addresses: 192.168.254.254/24
fd00:0:0:fe::fe/64
fe80::0000:02ff:febb:bbbb/64 (link)
DNS Addresses: 192.168.254.254
fd00:0:0:fe::fe
DNS Search: net.home
Routes: 192.168.64.0/18 via 192.168.254.32 (static)
192.168.254.0/24 from 192.168.254.254 (link)
fd00:0:0:40::/58 via fd00:0:0:fe::20 metric 1024 (static)
fd00:0:0:fe::/64 metric 256
fe80::/64 metric 256
● 3: en0 ethernet UP (networkd: enx000000aaaaaa)
MAC Address: 00:00:00:aa:aa:aa (Apple, Inc.)
Addresses: 172.20.10.9/28 (dhcp)
240b:xxxx:xxxx:xxxx:0200:00ff:feaa:aaaa/64
fe80::0200:00ff:feaa:aaaa/64 (link)
DNS Addresses: 172.20.10.1
fe80::xxxx:xxff:fexx:xxxx
Routes: default via 172.20.10.1 from 172.20.10.9 metric 100 (dhcp)
172.20.10.0/28 from 172.20.10.9 metric 100 (link)
172.20.10.1 from 172.20.10.9 metric 100 (dhcp, link)
240b:xxxx:xxxx:xxxx::/64 metric 100 (ra)
fe80::/64 metric 256
default via fe80::xxxx:xxff:fexx:xxxx metric 100 (ra)
1 inactive interfaces hidden. Use "--all" to show all
UFW の設定
ルーティング許可設定
ルーティングを行えるように Sysctl の設定を行う。これは UFW から設定を実施する。
【/etc/ufw/sysctl.conf】
net/ipv4/ip_forward=1
net/ipv6/conf/all/forwarding=1
NAPT 設定
UFW のNAPT設定を行う。以下を最後に追記する。
【/etc/ufw/before.rules】
*nat
-F
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/16 -o en0 -j MASQUERADE
COMMIT
【/etc/ufw/before6.rules】
*nat
-F
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s fd00::/8 -o en0 -j MASQUERADE
COMMIT
Firewall 設定
UFW の通信許可設定を行う。内部からのトラフィック許可、およびルーティングの許可を実施。
$ sudo ufw disable
$ sudo ufw allow in on en1 from 192.168.0.0/16 to any
$ sudo ufw allow in on en1 from fd00::/8 to any
$ sudo ufw route allow in on en1 from 192.168.0.0/16 to any
$ sudo ufw route allow in on en1 from fd00::/8 to any
設定値を確認し、問題なければ適用を行う。
$ sudo ufw show added
Added user rules (see 'ufw status' for running firewall):
ufw allow in on en1 from 192.168.0.0/16
ufw route allow in on en1 from 192.168.0.0/16
ufw allow in on en1 from fd00::/16
ufw route allow in on en1 from fd00::/8
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
状態確認
適用後の状態を確認する。
$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
Anywhere on en1 ALLOW IN 192.168.0.0/16
Anywhere (v6) on en1 ALLOW IN fd00::/8
Anywhere ALLOW FWD 192.168.0.0/16 on en1
Anywhere (v6) ALLOW FWD fd00::/8 on en1
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] Anywhere on en1 ALLOW IN 192.168.0.0/16
[ 2] Anywhere ALLOW FWD 192.168.0.0/16 on en1
[ 3] Anywhere (v6) on en1 ALLOW IN fd00::/8
[ 4] Anywhere (v6) ALLOW FWD fd00::/8 on en1
$ sudo nft list table ip nat
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 192.168.0.0/16 oifname "en0" counter packets 1790 bytes 372527 masquerade
}
}
$ sudo nft list table ip6 nat
# Warning: table ip6 nat is managed by iptables-nft, do not touch!
table ip6 nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
ip6 saddr fd00::/8 oifname "en0" counter packets 37 bytes 3432 masquerade
}
}
【参考URL】
18.04 – How to disable temporary/privacy IPv6 addresses?
How to rename a network interface in 20.04
netplanによってネットワークインターフェース名を変更
【Ubuntu】 /etc/netplan/50-cloud-init.yamlを編集するの止めろ
See configured rules even when inactive
NAT and FORWARD with Ubuntu’s ufw firewall