1. はじめに
1.1. 動機
- インターネット無料物件に引っ越したのですが、すべての機器のIPアドレスがDHCPでしか設定できません。
- そのため、NASのバックアップとかでrsyncを動かす際、IPアドレスが変わってしまっているとバックアップが失敗してしまいます。
- そのため、参考資料[1]を参考に、自宅ネットワークにルーターを配置してhome network内のIPアドレスは自分で管理する、という考えに至りました。
- ちょうどミニPCが一つ遊休していたので、それをルーター化して導入することにしました。
1.2. home network概略、ルーターで使用する機材
- home network: このうち、Home Routerを作成します。図はdraw.ioを用いて作成しています。
- ルーター機材:ミニPC(Bosgame EffiZen Series)
- OS: Ubuntu Desktop 24.04
- CPU: AMD Ryzen 7 5700U with Radeon Graphics
- RAM: 32GB
- SSD: 1TB
- NIC: Gigabit Ethernet 2 ports
- enp1s0: WAN側
- enp2s0: LAN側
1.3. 参考資料
| No. | URL | 説明 |
|---|---|---|
| [1] | 【戒め】インターネット無料賃貸でサーバ運用するときは個別にLANを分けてください。 | 私がルーターを導入しようと思うに至った記事です。 |
| [2] | ミニPCをUbuntuで無線LANルーター化 | ミニPCをルーター化する際の手順を参考にしました。ただし、本資料ではネットワーク設定はNetworkManagerを採用しているのと、DHCPサーバにはkeaを採用しています。 |
| [3] | UbuntuでDHCPサーバーを構築する(Ubuntu 24.04 LTS対応版) | ルーター化したミニPCDHCPサーバ(kea)を設定する手順を参考にしました。 |
| [4] | kea | DHCPサーバ(kea)の設定項目を参考にしました。 |
2. ルーター化
2.1. デバイス設定
- enp1s0(WAN側)
- ethデバイスとして作成し、IPアドレスは自動(DHCP)を設定します。DNSサーバは、Google Public DNS(8.8.8.8, 8.8.4.4)に設定します。
sudo nmcli conn add type ethernet con-name enp1s0 ifname enp1s0
sudo nmcli conn mod enp1s0 ipv4.method auto ipv4.dns "8.8.8.8,8.8.4.4"
- enp2s0(LAN側)
- bridgeデバイスを作成し、そのslaveデバイスとしてethデバイスを紐付けます。
- 実際、bridgeデバイスを作らなくてもなんとかなるのですが、仮想マシンやコンテナと紐付けするのに使うケースがあるのでbridgeを作成しています。
- IPアドレスは、192.168.40.1と静的に設定します。DNSサーバは、Google Public DNS(8.8.8.8, 8.8.4.4)に設定します。
- bridgeデバイスを作成し、そのslaveデバイスとしてethデバイスを紐付けます。
sudo nmcli conn add type bridge con-name bridge-0 ifname bridge-0
sudo nmcli conn add type ethernet slave-type bridge con-name enp2s0 ifname enp2s0 master bridge-0
sudo nmcli conn mod bridge-0 ipv4.method manual ipv4.address 192.168.40.1/24 ipv4.dns "8.8.8.8,8.8.4.4"
- 設定が完了したら、
nmcli con up XXXXXXで有効化します。
2.2. DHCPサーバ(kea)の設定
2.2.1. keaのインストール
sudo apt install -U -y kea-dhcp4-server
2.2.2. コンフィグファイル(kea-dhcp4.conf)作成
- デフォルト設定されているものは残しつつ、interface-configやsubnet4の項目をテーラリングしています。
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "bridge-0" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/run/kea/kea4-ctrl-socket"
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv",
"lfc-interval": 3600
},
"expired-leases-processing": {
"reclaim-timer-wait-time": 10,
"flush-reclaimed-timer-wait-time": 25,
"hold-reclaimed-time": 3600,
"max-reclaim-leases": 100,
"max-reclaim-time": 250,
"unwarned-reclaim-cycles": 5
},
"renew-timer": 900,
"rebind-timer": 1800,
"valid-lifetime": 3600,
"subnet4": [
{
"id": 1,
"subnet": "192.168.40.0/24",
"pools": [ { "pool": "192.168.40.51 - 192.168.40.199" } ],
"option-data": [
{
"name": "routers",
"data": "192.168.40.1"
},
{
"name": "domain-name-servers",
"data": "8.8.8.8, 8.8.4.4"
}
],
"reservations": [
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "syslog",
"pattern": "%-5p %m\n",
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
- 設定ができたら、keaサーバを再起動させます。systemdでエラーが表示されていなければOKです。
sudo systemctl restart kea-dhcp4-server.service
2.3. NAT変換
-
基本的に参考文献[2]の「ルーターに仕立てる設定」と同じです。POSTROUTINGで指定するソースIPアドレスは改変しています。
-
/etc/default/ufwの修正
DEFAULT_FORWARD_POLICY=“ACCEPT"
- /etc/ufw/sysctl.confの修正
net/ipv4/ip_forward=1
- /etc/ufw/before.rules への追記
- ただし、以下の記載の追加は、最後ではなく、*filterより前に記載する必要があります。
# NAT
*nat
:POSTROUTING ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
-F
-A POSTROUTING -s 192.168.40.0/24 -o enp1s0 -j MASQUERADE
COMMIT
3. 動作確認&おわりに
- LAN側に配線したLaptopやDesktop PCにDHCPアドレスが付与され、インターネットへの接続ができれば成功です。
- 静的IPアドレスを設定する機材については、keaのコンフィグファイルの"reservations"に設定を追加することで予約できます。
- ミニPCをルーターとして配置した際、ネットワーク速度の低下を懸念していましたが、ほどんど低下することはありませんでした。
- home networkにルーター&DHCPサーバを導入したので、次引っ越しをする場合でも、WAN側の指し直しをするだけで良い状態となりました。
