Недавно я изменил модель своего виртуального сервера на Hetzner. У нового есть внешний адрес IPv4, по которому он доступен из интернета (как и должен). Но я не могу использовать этот внешний IP в конфигурации: iptables
правила не действуют, openvpn
сервер не может привязать прослушиватель ни к одному порту, используя этот IP и т. д. Я нашел «локальный» IP-адрес ( 172.31.x.x
) в ifconfig
выводе, и если я использую его в конфигурации, все работает как часы.
На моем старом сервере я мог использовать его где угодно. Поэтому я просто задаюсь вопросом: почему внешний IP может не работать на моем новом сервере? ОСUbuntu 15.04
решение1
Hetzner прекратила назначать публичные адреса IPv4 виртуальным серверам. Насколько я могу судить, это изменение произошло, когда они изменили название продукта с VQ на CX. Однако использование NAT не упоминается в описании продукта.
В конце концов Hetzner представила новую облачную платформу, в которой виртуальные машины получают реальные публичные адреса IPv4 и маршрутизируемый префикс IPv6 /64. Обе версии имеют общее имя CX.
Виртуальные серверы, заказанные в 2012 и 2013 годах, сохранят свой публичный адрес IPv4 до 2019 года, когда линия VQ будет прекращена. Но виртуальные серверы, заказанные в 2016 году, имеют только адрес RFC1918, и Hetzner не будет маршрутизировать публичный адрес IPv4 на такой виртуальный сервер.
Они по-прежнему выделяли выделенный публичный адрес IPv4 для каждого виртуального сервера, который они транслировали с помощью NAT на назначенный адрес RFC1918. Hetzner считал, что это не проблема, поскольку это был NAT 1:1.
Как вы узнали, это подвержено ошибкам при настройке сервера. Вы должны знать об этом NAT. И вам нужно искать сопоставление всякий раз, когда вы что-то настраиваете. Для первого виртуального сервера, который мы получили в такой конфигурации, он был неправильно настроен дважды в первые пару дней из-за этого.
Любое программное обеспечение, которое полагается на знание публичного адреса IPv4, либо сломается, либо потребует специальной настройки. Кроме того, некоторые VPN и IP-туннели могут иметь проблемы, поскольку туннелируемые пакеты не будут транслироваться NAT.
Если вы установили, что эти потенциальные проблемы не повлияют на предполагаемое использование, и если вас устраивает необходимость учитывать сопоставление публичных и частных адресов при внесении изменений в конфигурацию, вы можете смириться с такой ситуацией.
Однако имейте в виду, что большинство реализаций NAT являются stateful. Если NAT действительно stateful, вы можете столкнуться с остановкой TCP-соединений при потере состояния.
Я не знаю, является ли NAT, используемый Hetzner, сохраняющим или не сохраняющим состояние. Самый очевидный способ, который я смог придумать для тестирования сохранения состояния, — это туннелирование установления соединения и отключение туннеля после установки TCP-соединения. Увы, именно такой тип туннелирования не будет работать, поэтому для проведения этого эксперимента сначала придется повторить их конфигурацию NAT 1:1. Я не пытался провести этот довольно сложный эксперимент.
Вот какие у вас есть варианты:
- Обновитесь до новой линейки CX, на которой Hetzner предоставит вам реальный адрес IPv4 и маршрутизируемый префикс IPv6 /64.
- Примите тот факт, что ваш трафик будет проходить через NAT 1:1 со всеми вытекающими отсюда недостатками.
- Передавайте весь важный трафик по IPv6, поскольку Hetzner правильно маршрутизирует трафик IPv6 без NAT.
- Переключитесь на выделенный сервер (предполагая, что они по-прежнему получат публичный адрес IPv4, что трудно понять, поскольку использование NAT нигде не упоминается в описании продукта).
- Переключитесь на другого провайдера.
решение2
Поскольку вы арендуете у Hetzner, я полагаю, вы говорите по-немецки, поэтому вот ответ напрямую отПоддержка вики Hetzner:
Что такое мой IP-адрес виртуальной машины 172.31.1.100?
или еще:
Почему у моей виртуальной машины есть другой IP-адрес, который я использую в качестве робота?
Почему у моей виртуальной машины есть частный IP?
В моделях CX IPv4-адреса на vServer являются частными IP-адресами, 1:1 для каждого NAT или открытого IPv4-адреса. В настоящее время это частный IP-адрес с адресом: 172.31.1.100. В Hetzner Robot указан явный IP-адрес.
Почему моя виртуальная машина имеет IP-адрес 172.31.1.100?
Или также:
Почему IP-адрес моей виртуальной машины отличается от указанного в Robot?
Почему у моей виртуальной машины частный IP-адрес?
В моделях CX IPv4-адрес виртуального сервера — это частный IP, который настраивается 1:1 через NAT на публичном IP. В настоящее время частный IP-адрес одинаков для всех: 172.31.1.100. Публичный IP-адрес отображается в Robot.