Коллизия портов при пересылке между гостем и хостом
Я работал над настройкой Vagrant с помощью базового блока VirtualBox и хотел бы перенаправить порты между моим гостем (Ubuntu 12.04) и моим хостом (Windows 7) для доступа к серверу apache2, который будет работать на госте.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь перейти между портами 80 на гостя и порт 80 на хосте (или даже 8080) Vagrant будет жаловаться и предупреждать меня о том, что прямой порт "... уже используется на хост-машине ".
Это не так.
Работает netstat -a показывает, что ничего не подключено или не использует порт 80 (или даже 8080). После некоторых экспериментов я обнаружил, что, очевидно, бесплатная версия Avast! который я использую, блокирует перенаправленные порты. Не все в Авасте! виноват только их веб-щит.
С Avast! Web Shield отключен, использование приведенного ниже файла конфигурации работает безупречно при загрузке виртуальной машины, когда она включена... в этом и заключается проблема.
Я хочу попытаться найти решение, которое позволит мне использовать Vagrant, не подвергая риску настройки антивируса, если это вообще возможно, или, по крайней мере, есть решение, в котором нет тонны предостережений. Намерение состоит в том, чтобы использовать Vagrant как средство, упрощающее настройку разработки, а не усложняющее ее.
Для справки вот мой Vagrantfile:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.network :forwarded_port, guest: 80, host: 80
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
end
Я пробовал частные сети, публичные сети и т. Д., Но я могу неправильно их настраивать.
Примечание автора. Возможно, этот вопрос уже задавался кем-то другим, и, если это так, я прошу прощения. Все, что я нашел до сих пор, кажется, не подходит в качестве решения, я думаю, что часть проблемы в том, что я не уверен, что знаю правильный вопрос, чтобы задать правильное решение. Если для этого есть существующее решение, пожалуйста, обязательно связывайте его!
1 ответ
После обновления avast! Бесплатный антивирус для версии программы: 2014.9.0.2011 от 2014.9.0.2008 проблема, похоже, решилась сама собой. Похоже, что произошел конфликт в начале выпуска антивируса Avast в 2014 году. Из их истории обновлений:
- Полностью переписан WebShield, так что теперь он больше не работает как "прозрачный прокси", что должно привести к общему улучшению стабильности и производительности. Это также позволяет видеть и обнаруживать больше угроз
- Компонент Firewall (в IS и Premier) стал более совместимым с другими приложениями, такими как Java и различными службами VPN.
В качестве альтернативы, хотя это и не решает проблему переадресации портов напрямую, публичные и частные сети работают, но имеют свои собственные предостережения:
- Публичные сети приобретают свои собственные IP-адреса в сети, и для доступа к ним необходимо запустить
ifconfigв гостевой, чтобы определить назначенный IP. Это увеличивает нагрузку на пользователя, использующего виртуальную машину, так как ему приходится делать дополнительный шаг каждый раз, когда он раскручивает виртуальную машину, чтобы определить IP-адрес своего сервера. - Частные сети позволяют назначать статический IP-адрес для частного потребления между хостом и гостем. Возможно, наилучшее из возможных решений, запрещающее переадресацию портов, за исключением того, что вам нужно выбрать IP-адрес, который будет использоваться.