web-dev-qa-db-ja.com

Ubuntuサーバーをネットワーク上の2つのプライベートネットワークのルーターとして設定し、DHCPアドレス指定を行うにはどうすればよいですか?

Ubuntuサーバーを使用して、ネットワーク上の2つのプライベートネットワークのルーターにしたい。

また、このサーバーがプライベートネットワークのDHCP要求を処理するようにします。

Ubuntu 16.04サーバーをセットアップしてこれを行うにはどうすればよいですか?

6
Thomas Ward

注#1:これは、可能な限り最も基本的なセットアップをセットアップするためのものです。クロスサブネットトラフィックをまったく制限せずに、2つ以上のサブネット用のストレートルーターをセットアップします。ファイアウォールルールを使用してこれを変更し、個々の機能の制御やサブネットまたはインターネットへのネットワークアクセスをより適切に処理できますが、これはこの基本的な「セットアップ」Q/Aペアの範囲外です。

注#2:この回答が書かれた時点では、Ubuntuはデフォルト設定のネットワーク制御システムにNetplanをまだ使用していませんでした。この答えは、Netplanを考慮せずに書かれたものです。

もちろん、3つのネットワークインターフェイスを備えたUbuntuサーバーが必要です。1つはインターネット接続インターフェイス用で、もう2つはプライベートネットワークインターフェイスです。

その後、このガイドに従ってこのサーバーをルーターとして設定します。

(1)/etc/sysctl.confを編集します。この行を見つけてコメント解除します。

net.ipv4.ip_forward=1

これが完了したら、コマンドSudo sysctl -pを実行してシステムカーネル設定を再読み込みします。これにより、UbuntuボックスはIPv4を介してサブネットとVLANを介してトラフィックを処理できるようになりました。

(2)ルーターボックスの/etc/network/interfacesを編集して、プライベートネットワークにサービスを提供するインターフェイスに静的IPアドレスを設定します。この例では、インターフェースがens37ens38であり、ens33が私のボックスのプライマリインターネット接続インターフェースであることを知っています。 ens33はそのままにしておきますが、ens37およびens38構成スタンザを追加します。

# Private Subnet 1
auto ens37
iface ens37 inet static
    address 10.76.100.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8 8.8.4.4

# Private Subnet 2
auto ens38
iface ens38 inet static
    address 10.76.101.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8 8.8.4.4

設定に応じて、ネットワークアドレスとインターフェイス名を調整します。

** VMware Workstationなどを使用しており、VMでvmnet#デバイスが選択されている場合、ホストシステムにホスト接続デバイスがないことを確認してください。このvmnet、または使用する場合は、ルーターボックスの最後のオクテットで.1とは異なるアドレスを使用します。

(3)DHCPサーバーソフトウェアをインストールします。これは後の手順で構成します。

Sudo apt-get install isc-dhcp-server

これにより、ルーターボックスがプライベートサブネットのDHCP要求を処理できるようになります。

(4)最初に、自動的にインストールされたDHCPサーバー設定をバックアップファイルにコピーします。

Sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.dist

(5)次に、元のファイルを空白にして、構成を適用できるようにします。

echo "" | Sudo tee /etc/dhcp/dhcpd.conf

(6)では、設定を使用しましょう。

# DHCP Server config

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# Specify the domain name servers to specify for each subnet.
option domain-name-servers 8.8.8.8;
option domain-name-servers 8.8.4.4;


# DHCP Subnet configurations

# Subnet 1 - ens37
subnet 10.76.100.0 netmask 255.255.255.0 {
  default-lease-time 86400;
  max-lease-time 86400;

  range 10.76.100.10 10.76.100.200;
  option routers 10.76.100.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 10.76.100.255;
}

# Subnet 2 - ens38
subnet 10.76.101.0 netmask 255.255.255.0 {
  default-lease-time 86400;
  max-lease-time 86400;

  range 10.76.101.10 10.76.101.200;
  option routers 10.76.101.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 10.76.101.255;
}

必要に応じてこの構成を調整し、ネットワーク構成設定で上記で設定したIPアドレスに基づいて「ルーター」オプションを更新してください。

必要に応じてファイルの調整が完了したら、ファイルを保存します。

(7)気にするインターフェイスをシステムに伝える必要があります。 /etc/default/isc-dhcp-serverを編集し、ens37行でプライベートネットワークインターフェイス(私の場合は38INTERFACES="")を指定して、次のようにします。

INTERFACES="ens37 ens38"

ファイルを保存します。

(8)そして今、ファイアウォールのルール。モノがルーターとして動作することを許可するようシステムに指示する必要があり、そのためには適切な制御とルールセットを設定する必要があります。ゼロからのセットアップについて説明しているため、ここでファイアウォールを設定していないと想定しています。

このマシンで既にufwをセットアップしている場合は、Sudo ufw disableを実行し、Sudo apt-get remove ufwufwをアンインストールします。 UFWが機能しないiptablesの高度なパワーが直接必要です。ほとんどのルーターでは、not UFWを使用する必要がありますat all

インターネットに接続されたネットワークインターフェイスのインターフェイス名を確認してください。サンプルのテストシステムでは、ens33でしたが、システムによって異なる場合があります。ルーターとなるプライベートネットワークのネットワークインターフェイスも知っていることを確認してください。ここでも必要です。次のコマンドを使用して、次のようにiptablesをセットアップします。私のコメントにも注意してください:

# Accept localhost traffic (local traffic to the system itself)
Sudo iptables -A INPUT -i lo -j ACCEPT

# Accept all traffic related to established connections
Sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Drop traffic coming from the Internet into our Internet-connected interface (except for traffic related to other established connections)
# Update this to match the interface name of your Internet-connected interface.
Sudo iptables -A INPUT -i ens33 -j DROP

# Accept traffic inbound from the local subnets we are acting as a router for.
# CHANGE THESE INTERFACE NAMES ACCORDING TO YOUR SETUP!
Sudo iptables -A INPUT -i ens37 -j ACCEPT
Sudo iptables -A INPUT -i ens38 -j ACCEPT

# Since we don't want to have our system completely open to the Internet, we need
# to drop all other traffic coming to our network.  This way, we can prevent the
# Internet at large from accessing our network directly from the Internet.
Sudo iptables -A INPUT -j DROP

# Add rules to accept forwarding on the interfaces we are doing routing for.
# CHANGE THESE INTERFACE NAMES ACCORDING TO YOUR SETUP!
Sudo iptables -A FORWARD -i ens37 -j ACCEPT
Sudo iptables -A FORWARD -o ens37 -j ACCEPT
Sudo iptables -A FORWARD -i ens38 -j ACCEPT
Sudo iptables -A FORWARD -o ens38 -j ACCEPT

# Add rules to the NAT table to allow us to actually let traffic on the interfaces
# which we are doing routing for go out to the Internet masquerade as our Internet-
# connected interface.
#
# ADJUST THE IP RANGES HERE TO MATCH THE IP RANGES AND THE SUBNETS FOR YOUR OWN
# ENVIRONMENT!  Remember that the IP address of 10.76.100.1 for the router, and
# the netmask 255.255.255.0 is equal to the network range/CIDR of 10.76.100.0/24
# for the purposes of these rules.
Sudo iptables -t nat -A POSTROUTING -s 10.76.100.0/24 ! -d 10.76.100.0/24 -j MASQUERADE
Sudo iptables -t nat -A POSTROUTING -s 10.76.101.0/24 ! -d 10.76.101.0/24 -j MASQUERADE

(9)iptables-persistentパッケージをインストールすると、iptablesルールを実際に記憶し、再起動時にそれらをロードできます。

Sudo apt-get install iptables-persistent`

既存のルールを保存するように求められたら、IPv4とIPv6の両方で[はい]を選択します。

(10)テストしてください!構成したプライベートネットワークの1つに別のシステムをセットアップし、セットアップしたら、インターネットと通信でき、上記でセットアップしたプライベートサブネット内に構成済みのDHCPアドレスがあることを確認してください。

5
Thomas Ward