Я хочу, чтобы мой сервер Ubuntu был маршрутизатором для двух частных сетей в моей сети.
Я также хочу, чтобы этот сервер обслуживал DHCP-запросы для частных сетей.
Как настроить сервер Ubuntu 16.04 для этого?
Вам понадобится сервер Ubuntu с 3 сетевыми интерфейсами, конечно, один для интерфейса, подключенного к Интернету, и два частных сетевых интерфейса.
После этого просто следуйте этому руководству для установки этого сервера в качестве маршрутизатора:
(1) Изменить /etc/sysctl.conf. Найдите и раскомментируйте эту строку:
net.ipv4.ip_forward=1
Как только вы это сделаете, выполните команду sudo sysctl -p, чтобы перезагрузить параметры системного ядра. Это позволяет ядру Ubuntu теперь обслуживать трафик между подсетями и VLAN через IPv4.
(2) Измените поле /etc/network/interfaces маршрутизатора, чтобы настроить статический IP-адрес на интерфейсах, обслуживающих частные сети. В этом примере я знаю, что интерфейсы являются ens37 и ens38, а 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 или аналогичные, и у вас есть vmnet# устройства, выбранные для виртуальной машины для этого, убедитесь, что хост-система либо не имеет подключенного к хосту устройства для этого vmnet, либо если if он использует другой адрес, чем .1 в последнем октете в вашем маршрутизаторе.
(3) Установите программное обеспечение сервера DHCP.
sudo apt-get install isc-dhcp-server
Это позволит ящику маршрутизатора обслуживать DHCP-запросы для ваших частных подсетей.
(4) Сначала скопируйте DHCP-сервер config, который был установлен автоматически в файл резервной копии.
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;
}
Отрегулируйте эту конфигурацию в соответствии с вашими потребностями и обязательно обновите опцию «routers» на основе любого IP-адреса, указанного выше в настройках вашей сети.
После того, как вы закончите настройку файла по мере необходимости, сохраните файл.
(7) Нам нужно сообщить системе, какие интерфейсы нужно заботиться. Измените /etc/default/isc-dhcp-server и укажите свои частные сетевые интерфейсы (в моем случае, ens37 и 38) в строке INTERFACES="", чтобы он выглядел так:
INTERFACES="ens37 ens38"
Сохраните файл.
(7) И теперь правила брандмауэра. Нам нужно сообщить системе, что она может работать как маршрутизатор, и настроить соответствующие элементы управления и наборы правил, чтобы это произошло. Я предполагаю, что здесь вы не настроили брандмауэр, потому что я описываю настройку с нуля.
Если вы уже установили ufw на этом компьютере, запустите sudo ufw disable и затем удалите ufw с помощью sudo apt-get remove ufw. UFW не работает для того, что нам нужно, нам нужна расширенная мощность iptables напрямую. Для большинства маршрутизаторов мы не должны использовать UFW вообще.
Убедитесь, что мы знаем имя интерфейса для вашего сетевого интерфейса, подключенного к Интернету. В моей тестовой системе это было 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
(8) Установите пакет iptables-persistent, который позволит нам запомнить наши правила iptables и загрузить их при перезагрузке.
[ f9]Когда он просит сохранить существующие правила, выберите «Да» для IPv4 и IPv6.
(9) Проверьте это! Настройте еще одну систему в одной из приватных сетей, которую вы настроили, и убедитесь, что она настроена на то, что она может связываться с Интернетом и имеет настроенный DHCP-адрес в пределах частных подсетей, установленных выше!
Вам понадобится сервер Ubuntu с 3 сетевыми интерфейсами, конечно, один для интерфейса, подключенного к Интернету, и два частных сетевых интерфейса.
После этого просто следуйте этому руководству для установки этого сервера в качестве маршрутизатора:
(1) Изменить /etc/sysctl.conf. Найдите и раскомментируйте эту строку:
net.ipv4.ip_forward=1
Как только вы это сделаете, выполните команду sudo sysctl -p, чтобы перезагрузить параметры системного ядра. Это позволяет ядру Ubuntu теперь обслуживать трафик между подсетями и VLAN через IPv4.
(2) Измените поле /etc/network/interfaces маршрутизатора, чтобы настроить статический IP-адрес на интерфейсах, обслуживающих частные сети. В этом примере я знаю, что интерфейсы являются ens37 и ens38, а 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 или аналогичные, и у вас есть vmnet# устройства, выбранные для виртуальной машины для этого, убедитесь, что хост-система либо не имеет подключенного к хосту устройства для этого vmnet, либо если if он использует другой адрес, чем .1 в последнем октете в вашем маршрутизаторе.
(3) Установите программное обеспечение сервера DHCP.
sudo apt-get install isc-dhcp-server
Это позволит ящику маршрутизатора обслуживать DHCP-запросы для ваших частных подсетей.
(4) Сначала скопируйте DHCP-сервер config, который был установлен автоматически в файл резервной копии.
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;
}
Отрегулируйте эту конфигурацию в соответствии с вашими потребностями и обязательно обновите опцию «routers» на основе любого IP-адреса, указанного выше в настройках вашей сети.
После того, как вы закончите настройку файла по мере необходимости, сохраните файл.
(7) Нам нужно сообщить системе, какие интерфейсы нужно заботиться. Измените /etc/default/isc-dhcp-server и укажите свои частные сетевые интерфейсы (в моем случае, ens37 и 38) в строке INTERFACES="", чтобы он выглядел так:
INTERFACES="ens37 ens38"
Сохраните файл.
(7) И теперь правила брандмауэра. Нам нужно сообщить системе, что она может работать как маршрутизатор, и настроить соответствующие элементы управления и наборы правил, чтобы это произошло. Я предполагаю, что здесь вы не настроили брандмауэр, потому что я описываю настройку с нуля.
Если вы уже установили ufw на этом компьютере, запустите sudo ufw disable и затем удалите ufw с помощью sudo apt-get remove ufw. UFW не работает для того, что нам нужно, нам нужна расширенная мощность iptables напрямую. Для большинства маршрутизаторов мы не должны использовать UFW вообще.
Убедитесь, что мы знаем имя интерфейса для вашего сетевого интерфейса, подключенного к Интернету. В моей тестовой системе это было 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
(8) Установите пакет iptables-persistent, который позволит нам запомнить наши правила iptables и загрузить их при перезагрузке.
sudo apt-get install iptables-persistent`
Когда он просит сохранить существующие правила, выберите «Да» для IPv4 и IPv6.
(9) Проверьте это! Настройте еще одну систему в одной из приватных сетей, которую вы настроили, и убедитесь, что она настроена на то, что она может связываться с Интернетом и имеет настроенный DHCP-адрес в пределах частных подсетей, установленных выше!
Вам понадобится сервер Ubuntu с 3 сетевыми интерфейсами, конечно, один для интерфейса, подключенного к Интернету, и два частных сетевых интерфейса.
После этого просто следуйте этому руководству для установки этого сервера в качестве маршрутизатора:
(1) Изменить /etc/sysctl.conf. Найдите и раскомментируйте эту строку:
net.ipv4.ip_forward=1
Как только вы это сделаете, выполните команду sudo sysctl -p, чтобы перезагрузить параметры системного ядра. Это позволяет ядру Ubuntu теперь обслуживать трафик между подсетями и VLAN через IPv4.
(2) Измените поле /etc/network/interfaces маршрутизатора, чтобы настроить статический IP-адрес на интерфейсах, обслуживающих частные сети. В этом примере я знаю, что интерфейсы являются ens37 и ens38, а 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 или аналогичные, и у вас есть vmnet# устройства, выбранные для виртуальной машины для этого, убедитесь, что хост-система либо не имеет подключенного к хосту устройства для этого vmnet, либо если if он использует другой адрес, чем .1 в последнем октете в вашем маршрутизаторе.
(3) Установите программное обеспечение сервера DHCP.
sudo apt-get install isc-dhcp-server
Это позволит ящику маршрутизатора обслуживать DHCP-запросы для ваших частных подсетей.
(4) Сначала скопируйте DHCP-сервер config, который был установлен автоматически в файл резервной копии.
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;
}
Отрегулируйте эту конфигурацию в соответствии с вашими потребностями и обязательно обновите опцию «routers» на основе любого IP-адреса, указанного выше в настройках вашей сети.
После того, как вы закончите настройку файла по мере необходимости, сохраните файл.
(7) Нам нужно сообщить системе, какие интерфейсы нужно заботиться. Измените /etc/default/isc-dhcp-server и укажите свои частные сетевые интерфейсы (в моем случае, ens37 и 38) в строке INTERFACES="", чтобы он выглядел так:
INTERFACES="ens37 ens38"
Сохраните файл.
(7) И теперь правила брандмауэра. Нам нужно сообщить системе, что она может работать как маршрутизатор, и настроить соответствующие элементы управления и наборы правил, чтобы это произошло. Я предполагаю, что здесь вы не настроили брандмауэр, потому что я описываю настройку с нуля.
Если вы уже установили ufw на этом компьютере, запустите sudo ufw disable и затем удалите ufw с помощью sudo apt-get remove ufw. UFW не работает для того, что нам нужно, нам нужна расширенная мощность iptables напрямую. Для большинства маршрутизаторов мы не должны использовать UFW вообще.
Убедитесь, что мы знаем имя интерфейса для вашего сетевого интерфейса, подключенного к Интернету. В моей тестовой системе это было 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
(8) Установите пакет iptables-persistent, который позволит нам запомнить наши правила iptables и загрузить их при перезагрузке.
sudo apt-get install iptables-persistent`
Когда он просит сохранить существующие правила, выберите «Да» для IPv4 и IPv6.
(9) Проверьте это! Настройте еще одну систему в одной из приватных сетей, которую вы настроили, и убедитесь, что она настроена на то, что она может связываться с Интернетом и имеет настроенный DHCP-адрес в пределах частных подсетей, установленных выше!