Перенаправление работает из внешней сети, но не из внутренней

У нас есть нат с предварительной маршрутизацией вроде этого: iptables -t nat -I PREROUTING -p tcp -d mysite.com --dport 37777 -j DNAT --to-destination 192.168.1.2:37777

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

0
задан 29 January 2018 в 15:17
1 ответ

Вам нужен вариант NAT Hairpinning .

Когда клиент изнутри сети пытается получить доступ к общедоступному IP-адресу маршрутизатора, пункт назначения соединение изменится на 192.168.1.2:37777 . Сервер получает начало рукопожатия и отвечает на исходный адрес (все еще клиент) ответом на рукопожатие. Поскольку клиент запоминает только разговор с IP-адресом маршрутизатора, а не с сервером, клиент видит это соединение как недействительное.

При закреплении, когда пункт назначения изменяется, источник также изменяется на IP-адрес маршрутизатора. если клиент находится в локальной сети. Это означает, что сервер передает его обратно маршрутизатору, а маршрутизатор ретранслирует пакеты клиенту. С точки зрения клиентов, это выглядит так, как будто он обращается к маршрутизатору.

Изменить: Что касается iptables, вы хотите добавить что-то вроде iptables -t nat -I POSTROUTING -p tcp -d 192.168.1.2 -s 192.168.1.0/24 --dport 37777 -j SNAT --to-source 192.168.1.1

0
ответ дан 24 November 2019 в 03:12

Теги

Похожие вопросы