ルーターは、コンピュータネットワークにおいて、データを2つ以上の異なるネットワーク間に中継する通信機器です。通信プロトコルに TCP/IP が使われるようになってから普及しました。データをネットワーク層で、どのルートを通して転送すべきかを判断するルート選択機能を持ちます。
参考サイト [1] を参考にして Alpine Linux に ルーターの設定をします。
以下の PC を使用しています。
ネットワーク構成
今回使用するサーバー (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 アドレスが割り振られていることを確認しました。
参考サイト
にほんブログ村
0 件のコメント:
コメントを投稿