1

У меня есть нетривиальное приложение, состоящее из нескольких веб-серверов и серверов баз данных, которые находятся в Vagrant-образе.

Переадресация портов (с iptables) была включена на хосте, так что я могу получить доступ к приложению и его сервисам, подключившись к хосту Vagrant. (URL-адреса для разработки приложений хранятся в /etc /hosts; у каждого из разработчиков в нашей команде есть экземпляр образа Vagrant. В результате URL, используемые во время разработки, недоступны через DNS.)

Мне нужно добраться до приложения из моих эмуляторов Android для тестирования; AVD находятся на той же машине, на которой я размещаю свою копию образа Vagrant.

Я добавил записи приложений в файл эмулятора /etc /hosts, указав их на 10.0.2.2 (хост-машина), однако пакеты не пересылаются; Я подозреваю, что это связано с тем, как эмулятор Android выполняет маршрутизацию. К сожалению, я не вижу в документах ничего, что могло бы помочь.

Вот как я настраиваю переадресацию портов с помощью iptables, который работает для физических устройств:

#!/usr/bin/env bash
VAGRANT_IFACE=vboxnet1
VAGRANT_GUEST=192.168.50.43

FWDING_PORT=80
PORT_TO_FWD=80

echo "Forwarding port ${FWDING_PORT} to ${VAGRANT_GUEST}:${PORT_TO_FWD} on ${VAGRANT_IFACE}"
iptables -I FORWARD -d ${VAGRANT_GUEST} -m comment --comment "Accept to forward traffic" -m tcp -p tcp --dport ${PORT_TO_FWD} -j ACCEPT
iptables -I FORWARD -m comment --comment "Accept to forward return traffic" -s ${VAGRANT_GUEST} -m tcp -p tcp --sport ${PORT_TO_FWD} -j ACCEPT
iptables -t nat -I PREROUTING -m tcp -p tcp --dport ${FWDING_PORT} -m comment --comment "redirect pckts to virtual machine" -j DNAT --to-destination ${VAGRANT_GUEST}:${PORT_TO_FWD}

echo 1 > /proc/sys/net/ipv4/ip_forward

Любые предложения будут наиболее ценными.

1 ответ1

0

Это не идеальное решение - и я не совсем уверен, в чем разница - но смог решить путем переадресации портов с ssh вместо iptables, то есть:

ssh -L :80:192.168.50.43:80 -N 127.0.0.1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .