Является ли это возможным? (заголовок этого вопроса)
Поиск в Google Virtualization with one public IP address
не дает ничего полезного
Что у меня есть:
Что я хочу сделать:
Проблема:
Это вообще возможно?
Извини, новичок во всем этом
Исследовательская работа
http://www.machine-unix.com/beginning-with-smartos/#comment-7256 Не решает мою проблему - гид настраивает внутренний IP
http://blog.bgentil.fr/smartos-use-global-zone-as-gateway-for-gests.html
Идеи
Да, ты можешь!
Для общей помощи по SmartOS:
Google рассматривает SmartOS как синоним Solaris. Всегда пользуйтесь поиском на smartos.org; не используйте Google напрямую. #SmartOS на Freenode и список рассылки также являются бесценными ресурсами.
Проблемы безопасности при настройке одного IP-адреса в центре обработки данных:
В SmartOS у вас обычно есть интерфейс администратора (частный / LAN) и общедоступный (общедоступный / WAN). Я понимаю, что это может быть невозможно в вашем развертывании, но очень важно знать, что виртуальные хосты KVM будут запускать незащищенный VNC в интерфейсе администратора. Вам нужно будет защитить это с помощью брандмауэра или изменения конфигурации.
Что вам нужно сделать, так это настроить зону, которая будет действовать как брандмауэр, шлюз, балансировщик нагрузки и т. Д. В этой зоне брандмауэра будет два сетевых адаптера: один в интерфейсе администратора, другой в глобальной сети. Вы можете разместить всех своих гостей на виртуальном коммутаторе, который будет похож на их подключение к физическому.
Поскольку у вас есть только один IP-адрес, который я бы попытался исправить, его может быть сложно настроить в зоне, если вы испортите конфигурацию сети, вы можете потерять доступ к машине. Хотя обычно это не рекомендуется, вам может потребоваться запустить брандмауэр в глобальной зоне.
Чтобы гости могли выходить в интернет, настройте NAT: http://wiki.smartos.org/display/DOC/NAT+using+Etherstubs
Для входящих https / http: Я запускаю экземпляр nginx и использую файл для каждой службы / веб-сайта в папках sites-available / sites-enabled. Конфигурация NGINX с SmartOS по умолчанию минималистична и не будет содержать этих папок.
Для входящих служб tcp / udp: Вы можете использовать встроенный брандмауэр (см. Man fwadm) в зоне вашего брандмауэра или использовать HAProxy, если вы хотите использовать виртуальные хосты. (Вы можете использовать исключительно HAProxy и исключить NGINX)
Я создал воспроизводимую суть для этого Вот. Он настраивается на github с использованием постоянных ссылок, и я постоянно обновляю его, когда я обращаюсь к нему с хорошими изменениями, поэтому в ближайшее время он никуда не денется.
Во-первых, диаграмма того, чего вы хотите достичь:
+------------------------------+
| Host |
+----------+ | +--------+ +--------+ |
| Internet +------+ Ext IF +--------+ Int IF | |
+----------+ | | e1000g | | gw0 | |
| +--------+ +---+----+ |
| | |
| +--+-----------+ | |
| |Z1| VNIC1+-----+ |
| +--------------+ | |
| +--------------+ | |
| |Z2| VNIC2+-----+ |
| +--------------+ | |
| +--------------+ | |
| |Z3| VNIC3+-----+ |
| +--+-----------+ |
| |
+------------------------------+
В общем, вы должны сначала понять, что нет один способ настроить внутреннюю сеть nat'd на SmartOS, но есть несколько вещей, которые должен решать каждый метод. Вот обзор этих вещей:
rdr
и внешнее сопоставление портов (шлюз отображает исходящий порт от внутреннего устройства на другой внешний порт и отслеживает его состояние, чтобы возвращаемый пакет попал на внутренний IP-адрес, который должен) достигается с помощью map
линий.Я в основном согласен с ответом Джеффри.
Однако я написал сообщение, которое вы упомянули для этой конкретной цели (запуск smartos с 1 общедоступным IP-адресом), поэтому вот мои предложения, если вы применили мою процедуру.
http / https трафик:
Добавьте перенаправление порта в /etc/ipf/ipnat.conf (или раздел NAT в /opt/custom/share/svc/smartos_setup.sh)
rdr e1000g0 0/0 port 80 -> 10.0.0.2 port 80 tcp
Добавьте правило брандмауэра в /etc/ipf/ipf.conf (или раздел FW в /opt/custom/share/svc/smartos_setup.sh)
pass in quick on e1000g0 from any to e1000g0/32 port=80
pass in quick on e1000g0 from any to 10.0.0.2 port=80
Перезагрузите правила ipfilter и ipnat:
$ ipf -Fa -f /etc/ipf/ipf.conf
$ ipnat -FC -f /etc/ipf/ipnat.conf
ssh-трафик:
То же, что и выше, с перенаправлением порта 2222 на 10.0.0.2:22, 2223 для 10.0.0.3:22, например:
rdr e1000g0 0/0 port 2222 -> 10.0.0.2 port 22 tcp
rdr e1000g0 0/0 port 2223 -> 10.0.0.3 port 22 tcp
при необходимости убедитесь, что вход в систему root включен в зоне / etc / ssh / sshd_config (PermitRootLogin да)