[Alpine Linux] ルーターの設定

2024-03-31 公開 / 2024-03-31 更新

ルーターは、コンピュータネットワークにおいて、データを2つ以上の異なるネットワーク間に中継する通信機器です。通信プロトコルに TCP/IP が使われるようになってから普及しました。データをネットワーク層で、どのルートを通して転送すべきかを判断するルート選択機能を持ちます。

Wikipedia より引用

参考サイト [1] を参考にして Alpine Linux に ルーターの設定をします。

以下の PC を使用しています。

評価用の PC (192.168.0.34)

ネットワーク構成

今回使用するサーバー (cnction) では、eth0 と eth1 の2つの NIC(ネットワーク・インターフェイス・カード)を有効にして Alpine Linux をインストールしています。

右図に、ネットワーク構成を示しました。

  • 一番目の NIC (eth0) は、ケーブルテレビ会社からレンタルしているルーター (BCW720J) の「家庭内 LAN (192.168.0.0/24)」に接続しています。
    • ルーター (BCW720J) は動的に IP アドレスなどを割り当ててくれますが、Alpine Linux のサーバー (cnction) の eth0(の MAC アドレス)については、ルーターの Web アプリを使って、IP アドレスを 192.168.0.34 に固定しています。
  • 二番目の NIC (eth1) は、評価用に使う「プライベートなネットワーク (192.168.1.0/24)」と「家庭内 LAN」とを接続するためのゲートウェイにします。
    • 「プライベートなネットワーク」からは、「家庭内 LAN」およびインターネットへ接続できるようにします。
  • さらに、Alpine Linux に DHCP サーバーを設定して「プライベートなネットワーク」に接続する PC に、IP アドレスなどを動的に割り当てられるようにします。
    • 割り当てる(リースする)動的な IP アドレスは 192.168.1.100 ~ 192.168.1.200 とします。

「プライベートなネットワーク」で使用する接続確認用 PC (silverblue) は、Fedora Silverblue 40 (beta) をインストールしたノート PC です。

 

インストールや設定作業は、Fedora Linux Workstation から ssh でログインして実施しています。

bitwalk@fedora:~$ ssh 192.168.0.34
bitwalk@192.168.0.34's password: 
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <https://wiki.alpinelinux.org/>.

You can setup the system with the command: setup-alpine

You may change this message by editing /etc/motd.

localhost:~$ su
Password: 
/home/bitwalk # 

NAT(ネットワークアドレス変換)

まず、IP フォワードを有効にすることで、2つの NIC の間でパケットを転送できるようにします。/etc/sysctl.conf の末尾に net.ipv4.ip_forward=1 というパラメータを追加します。

/home/bitwalk # echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.conf
net.ipv4.ip_forward=1
/home/bitwalk # cat /etc/sysctl.conf
# content of this file will override /etc/sysctl.d/*
net.ipv4.ip_forward=1

システムの起動時にここに記述されたパラメータが読み込まれますが、すぐに /etc/sysctl.conf の内容を反映させるには、システム管理コマンド sysctl -p を実行します。

/home/bitwalk # sysctl -p
net.ipv4.ip_forward = 1
/home/bitwalk # 

パケットフィルタリング型のファイアウォール機能、すなわち NAT を設定するために、iptables パッケージをインストールします。

/home/bitwalk # apk add iptables
fetch http://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.19/community/x86_64/APKINDEX.tar.gz
(1/5) Installing libmnl (1.0.5-r2)
(2/5) Installing libnftnl (1.2.6-r0)
(3/5) Installing libxtables (1.8.10-r3)
(4/5) Installing iptables (1.8.10-r3)
(5/5) Installing iptables-openrc (1.8.10-r3)
Executing busybox-1.36.1-r15.trigger
OK: 402 MiB in 90 packages

iptables をサービスに登録します。

/home/bitwalk # rc-update add iptables
 * service iptables added to runlevel default
 

eth1 は受信したパケットの転送を行い、eth0 に出力されるパケットに対してアドレス変換の処理を行うように設定します。

/home/bitwalk # iptables -A FORWARD -i eth1 -j ACCEPT
/home/bitwalk # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables サービスの save コマンドで設定内容を保存します。

/home/bitwalk # /etc/init.d/iptables save
 * Saving iptables state ...
 * /etc/iptables/rules-save: creating file                                [ ok ]
/home/bitwalk # 

DHCP

dhcp パッケージをインストールします。

/home/bitwalk # apk add dhcp
(1/4) Installing libgcc (13.2.1_git20231014-r0)
(2/4) Installing dhcp (4.4.3_p1-r4)
Executing dhcp-4.4.3_p1-r4.pre-install
(3/4) Installing dhcp-server-vanilla (4.4.3_p1-r4)
(4/4) Installing dhcp-openrc (4.4.3_p1-r4)
Executing busybox-1.36.1-r15.trigger
OK: 407 MiB in 94 packages
/home/bitwalk # 

/etc/dhcp/dhcpd.conf を編集して、DHCP サーバーが割り当てる IP アドレスの範囲などを設定します。domain-name-servers の IP アドレスは、家庭内 LAN が参照しているインターネット内の DNS アドレスを指定しました。

/home/bitwalk # cat /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option domain-name-servers XXX.XXX.XXX.XXX;
  option routers 192.168.1.1;
}
/home/bitwalk # 

dhcpd をサービスに登録し、起動します。

/home/bitwalk # rc-update add dhcpd
 * service dhcpd added to runlevel default
/home/bitwalk # rc-service dhcpd start
 * Caching service dependencies ...                                       [ ok ]
 * /run/dhcp: creating directory
 * /run/dhcp: correcting owner
 * /var/lib/dhcp/dhcpd.leases: creating file
 * /var/lib/dhcp/dhcpd.leases: correcting owner
 * Starting dhcpd ...                                                     [ ok ]
/home/bitwalk # 

接続テスト

Alpine Linux サーバーの eth1 側に有線でノート PC (silverblue) を接続して IP アドレスが割り振られていることを確認しました。

eth1 側に有線で接続して IP を自動取得

参考サイト

  1. A light NAT router and DHCP server with Alpine Linux | cylab.be [2022-06-08]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: