Могу ли я использовать iptables для пересылки гостевых запросов vm на хост?

Это немного сложно, но у меня есть Windows 7 vm (virtualbox), и мне нужно создать постоянное соединение с экземпляром MySQL на моем хост-компьютере.

Привязка... Я могу сделать это, используя привязку адреса mysql в хосте my.cnf и соответствующее сопоставление на виртуальной машине, но каждый раз, когда я меняю сети (рабочие, домашние, беспроводные или проводные), IP-адрес моей хост-машины меняется и Я должен сбросить адрес привязки на хост-машине и везде (у меня есть сайты на моей хост-машине, а также на виртуальной машине).

Виртуальная машина Windows имеет адаптер NAT (а также мостовой). Я использую определенный по умолчанию NAT "шлюз по умолчанию" 10.0.4.2, чтобы ориентироваться на мою хост-машину. Я подтвердил это, добавив "10.0.4.2 asiteonmyhostmachine.net" к файлу хоста на виртуальной машине и посетив URL.

Я пытался поиграться с IP-псевдонимами:

ifconfig lo:1 10.0.4.3 up

Я пробовал iptables, основываясь на некоторых других темах, которые я прочитал:

sudo iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 10.0.4.2 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT-p tcp -s 10.0.4.2 --sport 3306 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

У меня не было большой удачи, и я чувствую, что шарил в темноте. Используя nmap, я вижу, что порт 3306 недоступен из 10.0.4.2, поэтому кажется, что ничего из вышеперечисленного не сработало.

Любые предложения будут оценены, но, пожалуйста, также включите метод для проверки вашего (предложенного) решения.

Спасибо!

2 ответа

iptables is likely not the tool to do what you wish. However, you may want to use iptables to block access from the internet.

Network traffic on the lo device should not be routed to another device, even a virtual device. It is likely that virtualbox has created a br0 devices or some device with br во имя. The IP address of this device would be your best choice to connect to mysql on.

The virtual server should be able to connect directly to the mysql server, if it is listening on a reachable address. It is common for mysql to be configured to listen on the loopback (127.0.0.1) address as a security measure. Используйте команду sudo netstat -antp | grep mysql определить, какие IP-адреса mysql слушает дальше. Если это только прослушивание 127.0.0.1 или же ::1, вам нужно будет настроить конфигурацию mysql. Если это слушать 0.0.0.0mysql будет доступен на любом публичном адресе вашего сервера.

По соображениям безопасности Mysql по умолчанию не разрешает удаленный доступ с правами root.

Чтобы разрешить доступ, выполните следующие действия:

Отредактируйте файл конфигурации "/etc/mysql/my.cnf" и снимите ограничение удаленного доступа

Прокомментируйте следующую строку:

#bind-address = 127.0.0.1

Дайте разрешение на root для подключений с любого IP:

mysql -u root -pROOTPASSWORD
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'ROOTPASSWORD' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit

Mysql открытый порт с Iptables:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

После перезапуска службы можно подключиться к пользователю root с виртуальной машины.

Источники:

https://www.virtualbox.org/
http://www.ubuntu.com/download/server
http://directory.apache.org/
http://www.mysql.com/products/workbench/
Другие вопросы по тегам