iptables перенаправляет трафик между двумя интерфейсами

моя установка сделана (на том же хосте):

  • сетевая карта (NIC) eth0 со статическим IP 192.168.1.10
  • метка на NIC eth0: 0 со статическим IP 192.168.1.11
  • виртуальная гостевая машина (используя KVM) на 192.168.122.11 на virbr0

Я могу SSH гостевую машину с хоста, используя его IP 192.168.122.11, и я могу SSH хост-машину с удаленного компьютера в локальной сети, используя его IP 192.168.1.10.

Я хотел бы сделать виртуальную гостевую систему доступной из локальной сети через помеченную сетевую карту, чтобы я мог SSH в 192.168.122.11, подключившись к 192.168.1.11 с удаленной машины.

+--------------+
| Machine Ext2 |
+--------------+
       | ssh to 192.168.1.11:2222
       |
   +--------+
   | Router |
   +--------+
       |
       | (192.168.1.11:2222)
+----------------------------------------------+
| Machine Ext1 (Host)                          |
| <--> iptables <--> Guest (192.168.122.11:22) |
+----------------------------------------------+

я вдохновился многими вещами из разных учебников по интернету (все выглядят более или менее одинаково), но ничего не работает, и я не могу понять правильную настройку..

идея в том, чтобы создать следующее, вперед, и POSTROUTING правила с iptables так входящий и исходящий трафик перенаправляется правильно.

я отредактировал /etc / sysctl.conf так что ip_fordward=1 и выполнил следующие команды iptables:

$ sudo iptables -t nat -A PREROUTING -i virbr0 -p tcp -d 192.168.1.11 --dport 2222 -j DNAT --to-destination 192.168.122.11:22
$ sudo iptables -A FORWARD -p tcp -d 192.168.122.11 --dport 22 -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o virbr0 -p tcp -d 192.168.122.11 -j ACCEPT

пинг 192.168.1.11 все еще работает нормально. Но подключение к 192.168.1.11:2222 не удается:

$ telnet 192.168.1.11 2222
$ telnet: Unable to connect to remote host: Connection refused

Я чувствую, что я близок, чтобы получить его работу, но упустить что-то.. Можешь мне немного помочь?

С уважением,

15
задан jib
16.01.2023 1:10 Количество просмотров материала 2554
Распечатать страницу

1 ответ

  • Ваше 1-е правило использует -i virbr0 . Если он должен быть использован с Лан, это должно быть -i eth0 и скорее всего вашу проблему.
  • если ваша форвардная политика по умолчанию ACCEPT, ваше 2-е правило бесполезно. Если это капля, то вам нужна другие правила вперед, чтобы обратного потока. Можете ли вы дать свой полный набор правил iptables с:iptables-save -c ?
  • 3-е правило бесполезно. таблицы nat не требуют явного принятия. Обратный поток всегда правильно (используя conntrack), потому что это с отслеживанием состояния. Удалить его.
  • когда вы тестируете, обязательно сделайте тест из локальной сети (другой системы), а не с вашего хоста (тестирование с самого хоста не будет использовать предварительную маршрутизацию или пересылку, но вывод nat и вывод фильтра, так что потребуется по крайней мере другое правило nat)
0
отвечен A.B 2023-01-17 08:58

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

Ваш ответ

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

Имя
Вверх