У меня есть нетривиальное приложение, состоящее из нескольких веб-серверов и серверов баз данных, которые находятся в 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
Любые предложения будут наиболее ценными.