Как мне маршруту порт в хост Linux на виртуальную машину?

Я пытаюсь перенаправить определенный диапазон портов в Хосте linux на одну из его гостевых виртуальных машин. Я хотел бы, чтобы это перенаправление применялось ко всем интерфейсам хоста, включая localhost. Мне удалось сделать:

iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 8000:8500 -j DNAT --to 192.168.122.158

где 8000:8500 диапазон меня интересует пересылка и 192.168.122.158 это IP гостя. Это работает, пока я пытаюсь подключиться с другой машины, т. е. не с узла виртуальной машины. Но я также хотел бы иметь возможность перенаправлять трафик, который исходит изнутри хост.

надеюсь, что ясно, извините, если я исказил терминологию.

9
задан samwise
23.01.2023 14:29 Количество просмотров материала 3468
Распечатать страницу

2 ответа

очевидно, выполнение DNAT для петлевого трафика невозможно-например, см. этот вопрос или это обсуждение debian-user. Использование REDIRECT работает, потому что трафик остается на интерфейсе обратной связи, но перенаправление трафика на другую машину не работает.

вы можете использовать программу userspace для пересылки TCP-соединений-например, xinetd со следующей конфигурацией перенаправит порт 8000 на вашу виртуальную машину:

service forward_8000
{
        type                    = UNLISTED
        port                    = 8000
        socket_type             = stream
        wait                    = no
        user                    = root
        redirect                = 192.168.122.158 8000
}

однако, это невозможно перенаправить диапазон портов таким образом - каждый порт требует отдельного определения службы.

1
отвечен Sergey Vlasov 2023-01-24 22:17

локальные пакеты не будут входить в PREROUTING цепи. Я считаю, что вам нужно использовать OUTPUT цепь в таблице NAT, чтобы сделать это:

iptables -t nat -I OUTPUT -p tcp --dport 8000:8500 -j DNAT --to 192.168.122.158

возможно, Вам также потребуется добавить правило в цепочку фильтров, разрешающее эти исходящие и связанные с ними пакеты:

iptables -I OUTPUT -m state -d 192.168.122.158 --state NEW,RELATED,ESTABLISHED -j ACCEPT
0
отвечен Janos Pasztor 2023-01-25 00:34

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх