Назад | Перейти на главную страницу

Размещение веб-сайтов на общедоступном IP-адресе, маршрутизируемом через частную подсеть, с использованием одной машины Linux в качестве маршрутизатора и сервера

Я использую сервер Ubuntu в качестве маршрутизатора, маршрутизатора NAT и веб-сервера. Сервер подключен к интернет-провайдеру через публичную подсеть / 29. Также я размещаю на нем несколько важных веб-сайтов. Я попросил провайдера предоставить блок адресов ipv6. Говорят, что маршрутизатор, на котором заканчивается мой линк у провайдера, не поддерживает ipv6. Поэтому они сказали, что если я готов подключиться к их пограничному маршрутизатору через частную подсеть 172.16.x.x / 30, они могут предоставить мне блок ipv6. Однако они дадут мне общедоступный ipv4 / 29, направленный мне через 172.16.x.x / 30, который я могу использовать для размещения своих веб-сайтов. Но у меня есть проблема в том, что я не хочу покупать другой маршрутизатор, чтобы я мог разместить 172.16.x.x / 30 на интерфейсе, обращенном к интернет-провайдеру, и public / 29 на другом интерфейсе, обращенном к моему серверу и маршрутизатору NAT.

Я хочу знать, могу ли я использовать 172.16.x.x / 30 для подключения к ISP, а также использовать public / 29 на том же сервере Ubuntu для размещения веб-сайтов и выполнения NAT. У моего маршрутизатора более 5 сетевых адаптеров, и я также могу использовать vlan.

Граничный маршрутизатор ISP поддерживает ipv6, но они не могут напрямую предоставить мне общедоступную подсеть. этот. В настоящее время мой канал заканчивается на коммутаторе, который подключен к границе через 172.16.x.x.

Использование адресов RFC1918 для соединений маршрутизатор-маршрутизатор не одобряется, если оно находится в общедоступном Интернете, особенно при использовании на интерфейсе между интернет-провайдером и клиентом (в отличие от двух маршрутизаторов внутри сети интернет-провайдера). Это связано с тем, что они снижают полезность traceroute из-за того, что некоторые сайты блокируют все пакеты на эти адреса или с этих адресов, и потому что невозможно прикрепить значимые имена к этим адресам через записи DNS PTR, потому что они заставляют маршрутизаторы создавать сообщения ICMP, которые не могут быть прослеживается до их источника и, возможно, по другим причинам. Однако похоже, что ваш интернет-провайдер настроен на использование RFC1918 / 30 для нумерации интерфейса между ними и вами. Несмотря на рекомендацию не делать этого, на самом деле он будет работать нормально, и вы можете справиться с этой ситуацией только с одной трудностью (см. Ниже).

Жалобы интернет-провайдера на проблемы ARP с подсетью больше / 30 звучат фальшиво. Это правда, что на производительность маршрутизатора могут влиять бесполезные запросы ARP для несуществующих адресов на интерфейсе с большой разреженной подсетью, но для этого подсеть должна быть как большой, так и разреженной (содержать очень много неиспользуемых адресов). Это связано с тем, что только запросы ARP для адресов, которые не используются в подсети, должны бесконечно задерживаться и повторяться, что приведет к зависанию маршрутизатора. Если они обновят ваш интерфейс до (общедоступного) / 29, он не будет ни большим, ни разреженным (я предполагаю, что вы действительно будете использовать все или почти все адреса в / 29). Люди законно обеспокоены проблемами ARP с подсетями / 64 IPv6 (которые, очевидно, велики и всегда будут редкими, поскольку количество хостов в подсети никогда не будет приближаться к максимальному), но это звучит смешно, чтобы беспокоиться об этом для / 29.

В этой конфигурации есть хорошие новости: поскольку интернет-провайдер не настраивает ваш public / 29 на каком-либо интерфейсе, нет необходимости резервировать первый и последний IP-адрес блока в качестве широковещательных адресов, и нет необходимости в интернет-провайдере. использовать один из адресов на собственном маршрутизаторе. Таким образом, вы можете использовать для себя все 8 адресов вместо 5.

Вот что вы делаете:

  1. Настройте интерфейс, обращенный к поставщику услуг Интернета, с адресом 172.16.x.x / 30, предоставленным поставщиком услуг Интернета.

  2. Добавьте блок / 29 в интерфейс lo: /etc/network/interfaces:

    iface lo inet loopback
            up ip addr add a.b.c.d/29 dev lo
    
  3. Установите шлюз по умолчанию на стороне ISP этой ссылки 172.16.x.otherside.

    Теперь возникает сложность, о которой я упоминал ранее: по умолчанию, когда ваш сервер инициирует исходящие соединения (DNS-запросы, исходящие сообщения электронной почты, проверки обновлений программного обеспечения, исходящие подключения к базам данных или что-то еще, что делает ваш сервер, инициируемый самим собой, а не клиентом при контакте с сервером) сервер будет использовать 172.16.xx в качестве адреса источника пакетов, потому что это адрес, прикрепленный к интерфейсу, через который пакеты собираются исходить. Когда сервер пытается связаться с целевыми объектами в Интернете, используя этот исходный адрес, очевидно, что это не сработает. Вам нужно дать команде route возможность установить маршрут по умолчанию с настроенным исходным адресом.

    Опустить нормальное gateway 172.16.x.otherside запись и настройте это вместо /etc/network/interfaces:

    iface ethSOMETHING inet static
            [other configuration directives]
            up ip route add default via 172.16.x.otherside src a.b.c.d
    

    Для a.b.c.d, выберите один из адресов из вашего / 29, который вы считаете «основным» адресом вашего сервера.

Я попросил провайдера предоставить блок адресов ipv6. Говорят, что маршрутизатор, на котором заканчивается мой линк у провайдера, не поддерживает ipv6.

Мы все с нетерпением ждем того дня, когда это пройдет, но, к сожалению, это все еще большая часть мира, который я знаю.

Поэтому они сказали, что если я готов подключиться к их пограничному маршрутизатору через частную подсеть 172.16.x.x / 30, они могут предоставить мне блок ipv6. Однако они дадут мне общедоступный ipv4 / 29, направленный мне через 172.16.x.x / 30, который я могу использовать для размещения своих веб-сайтов. Но у меня есть проблема в том, что я не хочу покупать другой маршрутизатор, чтобы я мог разместить 172.16.x.x / 30 на интерфейсе, обращенном к интернет-провайдеру, и public / 29 на другом интерфейсе, обращенном к моему серверу и маршрутизатору NAT.

Ой, более или менее. Вот что я прочитал как происходящее: их роутер даст вам От 6 до 4 тоннелей через частное IP-пространство со следующим переходом другого маршрутизатора в их сети. Он также будет использовать протокол внутренней маршрутизации, который объявляет, что ваша система частного пространства является адресом следующего перехода для вашего публичного адресного пространства.

Я хочу знать, могу ли я использовать 172.16.x.x / 30 для подключения к ISP, а также использовать public / 29 на том же сервере Ubuntu для размещения веб-сайтов и выполнения NAT. У моего маршрутизатора более 5 сетевых адаптеров, и я также могу использовать vlan.

Граничный маршрутизатор ISP поддерживает ipv6, но причина, по которой они не могут напрямую предоставить мне общедоступную подсеть, заключается в следующем. В настоящее время мой канал заканчивается на коммутаторе, который подключен к границе через 172.16.x.x.

Мне кажется, что вам следует разместить внешние адреса всего, что вы хотите, чтобы сервер обслуживал через один внешний интерфейс, подключенный к маршрутизатору. Назначьте все для eth0 и различных подинтерфейсов (eth0: 0, eth0: 1 и т. Д.) И установите шлюз по умолчанию в качестве интерфейса их маршрутизатора.