Коллизия портов при пересылке между гостем и хостом
Я работал над настройкой 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-адрес, который будет использоваться.