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