Рейтинг:0

NAT-порт на внутренний узел

флаг ru
bas

Мы работаем с ПЛК (далее phoenix plc), который подключается к сети profinet (и profibus). Из-за отсутствия инструментов и невозможности перемонтировать вещи в соответствии с нашими потребностями (ПЛК встроен в нашу машину), мы ищем разные способы доступа к некоторому веб-серверу https на мастере profibus.

Итак, с некоторого расстояния у нас есть ПК с Windows. Этот ПК подключен через коммутатор к ПЛК. Этот ПЛК работает на дистрибутиве Linux. ПЛК подключен к ведущему устройству profinet и ведущему устройству profibus.

  • WinPC (192.168.192.200)
  • Внешний сетевой адаптер ПЛК (192.168.192.202)
  • Внутренний сетевой адаптер ПЛК (192.168.2.2)
  • Мастер Profinet (192.168.2.3)
  • Мастер Profibus (192.168.2.4)

Что было бы совершенно блестящим, если бы мы могли открыть веб-браузер на ПК с Windows и подключиться к мастеру profibus (где ПЛК просто транслировал бы пакеты на мастер profibus).

У меня есть root-доступ к ПЛК, поэтому я подумал, что смогу справиться с этим, используя iptables. Поскольку мы вообще не заботимся о безопасности, я установил для всех политик принятие (INPUT, OUTPUT, FORWARD). Единственный шаг, который я должен предпринять (наивный я...), - это NAT пакета к месту назначения. К сожалению, это не работает.

мой текущий результат iptables -S

root@axcf3152:/opt/plcnext/# iptables -S
-P ВВОД ПРИНЯТЬ
-P ВПЕРЕД ПРИНЯТЬ
-P ВЫВОД ПРИНЯТЬ

и мой физ стол

root@axcf3152:/opt/plcnext/# iptables -t nat -L
Цепь PREROUTING (политика ПРИНЯТЬ)
целевая защита выбор источника назначения
DNAT icmp -- куда угодно на: 192.168.2.4
DNAT tcp -- в любом месте tcp dpt:6666 to:192.168.2.4:443
DNAT tcp -- в любом месте tcp dpt:5555 to:192.168.2.3:443
DNAT tcp -- в любом месте tcp dpt:4444 to:192.168.2.3:80
DNAT tcp -- в любом месте tcp dpt:3333 to:192.168.2.4:80
DNAT tcp -- в любом месте tcp dpt:6666 to:192.168.2.4:443

В общем, все, что я сделал, кроме установки для всех политик ACCEPT, — это добавил несколько правил для nat:

iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --назначение 192.168.2.4:443

И то для обоих вкусов (http(80), https(443)), и для profinet master (192.168.2.3) и profibus master (192.168.2.4)

Если я понимаю все, что я прочитал об iptables сегодня вечером, мне не нужно возиться с добавлением правил для таблицы фильтров «ВПЕРЕД», поскольку я принимаю все (очень небезопасно, но нас не волнует эта тестовая установка).

Единственное, в чем я не уверен, так это в том, нужно ли (или когда) мне еще и nat POSTROUTING.

В любом случае, когда я открываю веб-страницу https://192.168.192.202:6666 или любой из его вариантов, страница не может загрузиться (отказано в соединении).

Любая помощь будет ОЧЕНЬ оценена!!

ОБНОВИТЬ:

выдача следующих команд позволяет мне пропинговать мастер profibus (Я ДУМАЮ)

iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
iptables -t nat -A PREROUTING -p icmp -j DNAT --to-destination 192.168.2.4
iptables -t filter -A FORWARD -p icmp -d 192.168.2.4 -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -j MASQUERADE

когда я теперь пингую на ПК с Windows до 192.168.192.202, я получаю ответы. я также вижу iptables -t nat -L -v увеличьте статистику по этому правилу (количество пакетов + байт увеличивается, когда я отправляю новые команды ping).

Я думаю, это доказывает, что мастер profinet отвечает на пинг (поскольку я теперь отклоняю icmp на самом ПЛК)

Вопросы:

  • Нужно ли мне правило FORWARD? Или мое предположение было правильным, что я все разрешаю и это правило избыточно?
  • Нужно ли добавлять МАСКАРАД? Мне все еще трудно понять, что это на самом деле делает (как и многие другие, судя по количеству вопросов в Интернете)
  • Что-то отсутствует в моем эксперименте с iptables, что могло бы объяснить, почему https не перенаправляется? Или все выглядит нормально, и проблема будет в фактическом мастере profibus (а не в размещении там веб-сервера, как утверждает поставщик, например)

ОБНОВЛЕНИЕ2:

Правило icmp работает время от времени. Когда я удаляю все правила из iptables и пытаюсь воспроизвести шаги, у меня не всегда получается. iptables сложнее, чем я думал...

Brennen Smith avatar
флаг nz
Вы включили переадресацию IPv4 в ядре? По умолчанию он отключен: добавьте строку: `net.ipv4.ip_forward=1` в `/etc/sysctl.conf`, а затем перезагрузите с помощью `sysctl -p`. Работает ли в настоящее время правило ICMP DNAT?
флаг ru
bas
@BrennenSmith Я сделал, как вы предложили. Почти уверен, что он был отключен. Я раскомментировал `#net/ipv4/ip_forward=1` и перезагрузил с помощью `sysctl -p`. Он выводит (среди прочих настроек) `net.ipv4.ip_forward=1`. Я также обновил свой вопрос с некоторыми «доказательствами», я думаю, что icmp перенаправляется правильно.Все еще не удается направить запросы https
djdomi avatar
флаг za
я не уверен, почему вы не хотите просто использовать nginx в качестве обратного прокси-сервера вместо того, чтобы открывать службу сервера?
флаг ru
bas
@djdomi, можете ли вы уточнить, есть ли более простой способ добиться этого?
djdomi avatar
флаг za
если я понял вопрос, все, что вы используете, - это веб-сервер, который находится где-то внутри локальной сети, и вы хотите использовать его через внешнее доступное место. это распространенный способ использования nginx в качестве обратного прокси.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.