2019/08/31

Debian10のPCのルータ化

目的


Debian10 (Buster) をインストールしたPCをルータにします。

インターネット側のネットワークインターフェイスenxと、内部ネットワーク側のネットワークインターフェイスeniがあるとして説明します。

[内部PC1]┬(eni)[ルータ化するPC](enx)─[インターネット]
[内部PC2]┘
なお、試行錯誤したあとにまとめているため、記載通りでは動かない可能性があります。

おおまかな手順


おおまかな作業手順は次のとおりです。
  • IPアドレスの固定
  • isc-dhcp-server (DHCPサーバ)のインストールと設定
  • nftables (NAT用)のインストールと設定
  • bind9 (DNSサーバ)のインストールと設定
以下の作業ではすべてルートで行うか、sudoで実行してください。

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-server
isc-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 bind9
https://www.clear-code.com/blog/2010/11/19.htmlが参考になります。

もし、クライアントのブラウザからドメイン名を使ったアクセスができない場合は、

$ systemctl restart isc-dhcp-server
で、DHCPサービスを再起動してみてください。

以上で、ルータが完成です。セキュリティー関連の設定は別途実施してください。

0 件のコメント :