目的
Debian10 (Buster) をインストールしたPCをルータにします。 インターネット側のネットワークインターフェイスenxと、内部ネットワーク側のネットワークインターフェイスeniがあるとして説明します。
[内部PC1]┬(eni)[ルータ化するPC](enx)─[インターネット] [内部PC2]┘なお、試行錯誤したあとにまとめているため、記載通りでは動かない可能性があります。
おおまかな手順
おおまかな作業手順は次のとおりです。
- IPアドレスの固定
- isc-dhcp-server (DHCPサーバ)のインストールと設定
- nftables (NAT用)のインストールと設定
- bind9 (DNSサーバ)のインストールと設定
IPアドレスの固定
Debian10ではNetworkManagerがデフォルトで動作しています。そのため、nmcliを使って、eniのIPアドレスの固定します。 残念なことにGUIを使った設定では、いずれか1つのネットワークインターフェイスしか有効にできないようです。 nmcliの解説はhttps://go-journey.club/archives/4124が参考になります。 有線LANの場合、作業の開始前にLANケーブルを接続しておくことをお薦めします。 接続がないとSTATEに利用不可と表示され、設定した結果を確認できなくなります。 最初に、ネットワークインターフェイスをNetworkManagerから見えるようにします。
$ nmcli connection add type ethernet ifname eni con-name eni次に、eniのIPアドレスを指定します。
$ nmcli connection modify eni ipv4.method manual ipv4.addresses 10.0.0.1/27しばらくすると、IPアドレスが固定され、ネットワーク接続が完了します。 ネットワークの状態は
$ nmcli deviceで確認できます。
DHCPサーバの設定
isc-dhcp-serverをインストールします。
$ apt install isc-dhcp-serverisc-dhcl-serverの設定ファイルは /etc/dhcp/dhcpd.conf にあります。 そこに次の内容を追記します。
subnet 10.0.0.0 netmask 255.255.255.224 { range 10.0.0.10 10.0.0.20; option routers 10.0.0.1; option domain-name-servers 10.0.0.1; }IPアドレスは適宜変更してください。この設定で配布されるIPアドレスは、10.0.0.10〜10.0.0.20の範囲です。 最後に、DHCPサービスを再起動します。
$ systemctl restart isc-dhcp-serverこれで内部PCにIPアドレスが配布されます。
NATの設定
ルータとして動作するようにするために、まず、 /etc/sysctl.conf に
net.ipv4.ip_forward=1を追記します。コメントアウトされた状態で記載されているので、コメントを外すだけです。 この設定を次のコマンドを実行することで有効にします。
$ sysctl --system有効になっているかは
$ cat /proc/sys/net/ipv4/ip_forwardで確認できます。出力が1になっていれば、OKです。 次に、NATを有効にします。NATはファイアウォールの機能の一部ですので、Debian10から標準となったnftablesを用います。
$ apt install nftablesでインストールし、/etc/nftables.conf に次の内容を追加します。
table ip nat { chain prerouting { type nat hook prerouting priority 0; } chain postrouting { type nat hook postrouting priority 100; oifname "enx" masquerade } }追記できればサービスを有効化し、実行します。
$ systemctl enable nftables.service $ systemctl restart nftablesクライアントから8.8.8.8にpingが通るようになっていれば成功です。
DNSサーバの設定
BIND9をインストールするだけです。
$ apt install bind9https://www.clear-code.com/blog/2010/11/19.htmlが参考になります。 もし、クライアントのブラウザからドメイン名を使ったアクセスができない場合は、
$ systemctl restart isc-dhcp-serverで、DHCPサービスを再起動してみてください。 以上で、ルータが完成です。セキュリティー関連の設定は別途実施してください。