Назад | Перейти на главную страницу

Гость QEMU может получить доступ к сайтам HTTPS, но не HTTP

Итак, я настраиваю гостевую систему QEMU на моем сервере Debian Wheezy с помощью virt-manager.

В качестве гостя я установил сервер Ubuntu 14.04.1.

Сервер содержит следующее правило iptables:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 3080

Это взято из вопроса о сбое сервера "Как запустить сервер на 80-м порту как обычный пользователь Linux?"

Таким образом, входящие HTTP-запросы на порт 80 к хосту Debian перенаправляются в правильное приложение.

Но, как побочный эффект, исходящие запросы от моего гостя QEMU также перенаправляются туда. Как я могу это исправить?

Правило

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3080

означает перенаправление все с целевым портом 80 на порт 3080, что соответствует всему HTTP-трафику. Вам нужно будет указать IP-адрес или интерфейс, чтобы быть конкретным: если ваш IP-адрес 1.2.3.4, это будет делать:

iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j REDIRECT --to-port 3080

В -d 1.2.3.4 флаг указывает адрес назначения, и будут перенаправлены только запросы на ваш IP.

Другой вариант - использовать сетевой интерфейс, поэтому, если у вас есть подключение к Интернету, eth0, ты можешь использовать:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3080

Что также будет работать, потому что -i Спички входящий движение на eth0 интерфейс, например запросы, сделанные на ваш компьютер.

Вы даже можете комбинировать фильтры (например, у вас есть несколько сетевых адаптеров и несколько IP-адресов, но вы хотите запустить сайт только на одной паре)

iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.4 -p tcp -j REDIRECT --to-port 3080

Вам следует обратиться к руководству iptables, если вам нужен точный контроль над тем, кто перенаправляется, блокируется и т. Д.