OpenWRT DMZ и перенаправление: не работают.

Вопрос или проблема

Я настроил DMZ, который может подключаться к интернету и не может подключаться к внутренней сети. Фактически я разместил только один сервер в DMZ (HTTP-сервер). Работает отлично (я могу его пинговать из локальной сети, могу подключаться по SSH, но перенаправление не работает).
Это мои файлы конфигурации

/etc/config/network


config interface 'loopback'
    option device 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix '*****'

config atm-bridge 'atm'
    option vpi '1'
    option vci '32'
    option encaps 'llc'
    option payload 'bridged'
    option nameprefix 'dsl'

config dsl 'dsl'
    option annex 'b'
    option tone 'av'

config device
    option name 'br-lan'
    option type 'bridge'
    list ports 'lan3'
    list ports 'lan4'

config device
    option name 'lan1'
    option macaddr '******'

config device
    option name 'lan2'
        option macaddr '******'

config device
    option name 'lan3'
        option macaddr '******'

config device
    option name 'lan4'
        option macaddr '******'

config interface 'lan1'
    option device 'lan1'
    option proto 'static'
    option ipaddr '192.168.0.1'
    option netmask '255.255.255.0'
    option ip6assign '60'

config interface 'lan2'
    option device 'lan2'
    option proto 'static'
    option ipaddr '192.168.178.1'
    option netmask '255.255.255.0'
    option ip6assign '60'

config device
    option name 'dsl0'
        option macaddr '******'

config device
        option type '8021q'
        option ifname 'lan1'
        option vid '1'
        option name 'lan1.1'

config interface 'dmz'
        option proto 'static'
        option device 'lan1.1'
        option ipaddr '192.168.179.1'
        option netmask '255.255.255.0'

config interface 'wan'
    option device 'dsl0.835'
    option proto 'pppoe'
    option peerdns '0'
    option ipv6 '1'
    option username 'me'
    option password 'you'
    list dns '8.8.8.8'
    list dns '8.8.4.4'

config interface 'wan6'
    option device '@wan'
    option proto 'dhcpv6'

/etc/config/firewall


config defaults
    option syn_flood    1
    option input        REJECT
    option output       ACCEPT
    option forward      REJECT
# Uncomment this line to disable ipv6 rules
#   option disable_ipv6 1

config zone
    option name     lan
    list   network      'lan'
    option input        ACCEPT
    option output       ACCEPT
    option forward      ACCEPT
        list network 'br-lan'
        list network 'lan1'
        list network 'lan2'

config zone
    option name     wan
    list   network      'wan'
    list   network      'wan6'
    option input        REJECT
    option output       ACCEPT
    option forward      REJECT
    option masq     1
    option mtu_fix      1

config forwarding
    option src      lan
    option dest     wan

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
    option name     Allow-DHCP-Renew
    option src      wan
    option proto        udp
    option dest_port    68
    option target       ACCEPT
    option family       ipv4

# Allow IPv4 ping
config rule
    option name     Allow-Ping
    option src      wan
    option proto        icmp
    option icmp_type    echo-request
    option family       ipv4
    option target       ACCEPT

config rule
    option name     Allow-IGMP
    option src      wan
    option proto        igmp
    option family       ipv4
    option target       ACCEPT

# Allow DHCPv6 replies
# see https://github.com/openwrt/openwrt/issues/5066
config rule
    option name     Allow-DHCPv6
    option src      wan
    option proto        udp
    option dest_port    546
    option family       ipv6
    option target       ACCEPT

config rule
    option name     Allow-MLD
    option src      wan
    option proto        icmp
    option src_ip       fe80::/10
    list icmp_type      '130/0'
    list icmp_type      '131/0'
    list icmp_type      '132/0'
    list icmp_type      '143/0'
    option family       ipv6
    option target       ACCEPT

# Allow essential incoming IPv6 ICMP traffic
config rule
    option name     Allow-ICMPv6-Input
    option src      wan
    option proto    icmp
    list icmp_type      echo-request
    list icmp_type      echo-reply
    list icmp_type      destination-unreachable
    list icmp_type      packet-too-big
    list icmp_type      time-exceeded
    list icmp_type      bad-header
    list icmp_type      unknown-header-type
    list icmp_type      router-solicitation
    list icmp_type      neighbour-solicitation
    list icmp_type      router-advertisement
    list icmp_type      neighbour-advertisement
    option limit        1000/sec
    option family       ipv6
    option target       ACCEPT

# Allow essential forwarded IPv6 ICMP traffic
config rule
    option name     Allow-ICMPv6-Forward
    option src      wan
    option dest     *
    option proto        icmp
    list icmp_type      echo-request
    list icmp_type      echo-reply
    list icmp_type      destination-unreachable
    list icmp_type      packet-too-big
    list icmp_type      time-exceeded
    list icmp_type      bad-header
    list icmp_type      unknown-header-type
    option limit        1000/sec
    option family       ipv6
    option target       ACCEPT

config rule
    option name     Allow-IPSec-ESP
    option src      wan
    option dest     lan
    option proto        esp
    option target       ACCEPT

config rule
    option name     Allow-ISAKMP
    option src      wan
    option dest     lan
    option dest_port    500
    option proto        udp
    option target       ACCEPT

### EXAMPLE CONFIG SECTIONS
# do not allow a specific ip to access wan
#config rule
#   option src      lan
#   option src_ip   192.168.45.2
#   option dest     wan
#   option proto    tcp
#   option target   REJECT

# block a specific mac on wan
#config rule
#   option dest     wan
#   option src_mac  00:11:22:33:44:66
#   option target   REJECT

# block incoming ICMP traffic on a zone
#config rule
#   option src      lan
#   option proto    ICMP
#   option target   DROP

# port redirect port coming in on wan to lan
#config redirect
#   option src          wan
#   option src_dport    80
#   option dest         lan
#   option dest_ip      192.168.16.235
#   option dest_port    80
#   option proto        tcp

# port redirect of remapped ssh port (22001) on wan
#config redirect
#   option src      wan
#   option src_dport    22001
#   option dest     lan
#   option dest_port    22
#   option proto        tcp

### FULL CONFIG SECTIONS
#config rule
#   option src      lan
#   option src_ip   192.168.45.2
#   option src_mac  00:11:22:33:44:55
#   option src_port 80
#   option dest     wan
#   option dest_ip  194.25.2.129
#   option dest_port    120
#   option proto    tcp
#   option target   REJECT

#config redirect
#   option src      lan
#   option src_ip   192.168.45.2
#   option src_mac  00:11:22:33:44:55
#   option src_port     1024
#   option src_dport    80
#   option dest_ip  194.25.2.129
#   option dest_port    120
#   option proto    tcp

config zone
        option name 'dmz'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list device 'lan1.1'

config forwarding
        option src 'lan'
        option dest 'dmz'

config forwarding
        option src 'dmz'
        option dest 'wan'

config redirect
        option dest 'dmz'
        option target 'DNAT'
        option name 'Http redir'
        option src 'wan'
        option src_dport '443'
        list proto 'tcp'
        option dest_ip '192.168.179.3'

IP 192.168.179.3 доступен с роутера и из локальной сети


telnet 192.168.179.3 443
Trying 192.168.179.3...
Connected to 192.168.179.3.
Escape character is '^]'.

Когда я перезапускаю файрвол на маршрутизаторе OpenWRT, появляется сообщение об ошибке

Section @redirect[0] (Http redir) internal rewrite IP cannot be determined, disabling reflection

Перенаправление не работает

telnet externalip 443
telnet: Unable to connect to remote host: Connection refused

Есть идеи?

Нашел решение, странно, но работает

config redirect
       option name            'Http1'
       option target          DNAT
       option src             wan
       option dest            lan
       option proto           tcp
       option src_dport       443
       option dest_ip         192.168.179.3
       option dest_port       443
       option enabled         1

config redirect
       option name            'Https1'
       option target          DNAT
       option src             wan
       option dest            lan
       option proto           tcp
       option src_dport       80
       option dest_ip         192.168.179.3
       option dest_port       80
       option enabled         1

Назначение должно быть “lan” вместо “dmz”, и IP – это IP хоста в DMZ

Ответ или решение

Конфигурация сети с использованием OpenWRT может быть довольно сложной задачей, особенно если речь идет о создании зоны DMZ и настройке перенаправления портов. Являясь IT-экспертом, хочу предоставить вам подробное объяснение проблемы и предложить корректировки конфигурации.

Теория

Начнем с понимания основной концепции. DMZ (Demilitarized Zone) — это сетевая зона, которая позволяет изолировать ресурсы, доступные из интернета, от основной внутренней сети. Зачастую это делается для защиты внутренней сети от внешних атак, предоставляя ограниченный доступ к сетевым сервисам (например, веб-серверам).

Перенаправление портов (Port Forwarding) предполагает настройку, при которой трафик, поступающий на определенный порт внешнего интерфейса маршрутизатора, перенаправляется на заданный внутренний IP-адрес и порт. Это полезно для доступа к службам в вашей сети из интернета.

Настраивая OpenWRT, важно правильно сконфигурировать как network-файл, так и firewall-файл, чтобы обеспечить корректное взаимодействие между различными сетевыми интерфейсами и зонами.

Пример

Рассмотрим вашу текущую конфигурацию. На первый взгляд, у вас есть несколько ошибок в настройках, которые могут приводить к проблемам с перенаправлением. В вашем файле /etc/config/network указана конфигурация интерфейса DMZ с IP-адресом 192.168.179.1:

config interface 'dmz'
    option proto 'static'
    option device 'lan1.1'
    option ipaddr '192.168.179.1'
    option netmask '255.255.255.0'

В /etc/config/firewall создана зона DMZ, и указано правило перенаправления для трафика, поступающего на порт 443:

config zone
    option name 'dmz'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'
    list device 'lan1.1'

config redirect
    option dest 'dmz'
    option target 'DNAT'
    option name 'Http redir'
    option src 'wan'
    option src_dport '443'
    list proto 'tcp'
    option dest_ip '192.168.179.3'

Однако, здесь наблюдается ошибка, которая вызывает предупреждение при перезапуске фаервола: "internal rewrite IP cannot be determined, disabling reflection".

Применение

Судя по вашему решению, оно действительно работает, но не совсем очевидно, почему. Вы изменили назначение redirect с dmz на lan, даже несмотря на то, что сервер физически находится в DMZ. Это может быть связано с тем, как OpenWRT интерпретирует зоны и их взаимодействие.

Однако, чтобы корпеть над этим решением, стоит убедиться в следующем:

  1. Проверка настройки интерфейсов: Убедитесь, что интерфейс, используемый для DMZ, правильно настроен и привязан к физическому порту. Он должен быть отделен от основной локальной сети.

  2. Корректировка правил перенаправления: Если ваш redirect работает с dest 'lan', это может быть связано с настройками NAT в OpenWRT, где локальная сеть определяется более глубоко, чем DMZ.

  3. Оптимизация маршрутных правил: Проверьте связанные правила маршрутизации, чтобы убедиться, что DMZ интерфейс действительно изолирован, но доступны необходимые для сервера службы.

  4. Документация и логирование: Обратите внимание на логи фаервола и другая диагностическая информация может дать понимание, почему определенные настройки не работают. Это поможет изолировать проблемы в других сетевых сервисах.

Заключение

Настройка DMZ и перенаправления портов требует четкого понимания работы сетей и взаимодействия различных интерфейсов в OpenWRT. Решение, предложенное вами, явно предлагает обходной путь, который вопреки стандартной практике, позволяет системе работать.

Я советую использовать данное решение с осторожностью, учитывая специфичность вашего сетевого окружения. Разумеется, лучшее решение может быть найдено через дальнейшие тестирования и классическое соблюдение правил настройки DMZ. Использование IP-технологий должно основываться на исчерпывающем анализе проблем и четком следовании сетевым стандартам.

Оцените материал
Добавить комментарий

Капча загружается...