У меня есть модем "безопасности", который перенаправляет мой внешний IP-адрес на страницу конфигурации при внутреннем доступе. На следующей диаграмме:

  10.0.0.1 +-------+ 1.2.3.4
     +-----+ Modem |<---------+Internet
     |     +-------+
     |
     |
     |     +--------+ 192.168.1.1
     +---->| Router +------+
10.0.0.253 +--------+      |
                           |
           +--------+      |
           | Server |<-----+
           +--------+ 192.168.1.3

У меня DMZ настроен на модеме до 10.0.0.253 (маршрутизатор), а DMZ на маршрутизаторе - до 192.168.1.3 (сервер).

nathan@InternetDevice $ curl 1.2.3.4
Hello from Server!

nathan@Server $ curl 1.2.3.4
<!DOCTYPE html>
...
blah blah router config page
...

Я хотел бы настроить маршрутизатор для автоматического перенаправления любых соединений TCP, UDP или ICMP с 192.168.1.x на 1.2.3.4 на 192.168.1.3 вместо этого прозрачно. Если есть лучший способ добиться этого (кроме получения менее "специального" модема), я бы тоже с этим согласился.

Модем по сути является черным ящиком, но и маршрутизатор, и сервер работают под управлением Linux. В настоящее время у меня есть имя хоста, которое глобально разрешается в 1.2.3.4 , но DNS-сервер маршрутизатора разрешается в 192.168.1.3 . Однако это не удается, например, на устройствах Chrome OS, которые всегда используют DNS от Google, и это выглядит странно.

1 ответ1

0

Я закончил писать сценарий ...

PUBLIC_IP="$(curl ipinfo.io/ip 2>/dev/null)";
DMZ_IP="192.168.1.3";

add_rule() {
        iptables -t nat -A PREROUTING --dst "${PUBLIC_IP}" --protocol "${1}" --match "${1}" --jump DNAT --to-destination "${DMZ_IP}";
};

add_rule tcp;
add_rule udp;

iptables -t nat -A POSTROUTING -j MASQUERADE;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .