Должен ли я предоставить доступ к серверу на OpenWrt через WAN или только через LAN с переадресацией портов из WAN?

Должен ли я предоставить доступ к серверу на OpenWrt через WAN или только через LAN с переадресацией портов из WAN?

Если бы я установил сервер на компьютере за маршрутизатором и захотел бы разрешить подключение к нему из Интернета, мне пришлось бы сделать две вещи: во-первых, открыть брандмауэр на сервере, чтобы разрешить входящее подключение; и, во-вторых, настроить правило переадресации портов на маршрутизаторе, чтобы подключение могло идти из WAN в LAN (конкретно к серверу).

Но что делать, если рассматриваемый серверный компьютер сам по себе является маршрутизатором, работающим на OpenWrt?

Я могу предложить два варианта.

Вариант A. Относитесь к маршрутизатору как к любому другому компьютеру в локальной сети. После установки сервера на маршрутизаторе откройте брандмауэр, чтобы разрешить входящие соединения из локальной сети на сервер. (Я полагаю, это делается в LuCI > Сеть > Брандмауэр > Правила трафика.) Затем настройте правило переадресации портов из WAN в локальную сеть (в частности, на сервер). (LuCI > Сеть > Брандмауэр > Переадресация портов.)

Вариант Б. Используйте вкладку «Правила трафика» LuCI, чтобы открыть брандмауэр для подключения из WAN напрямую к серверу.

Вопросы следующие:

  1. Прав ли я, полагая, что это два варианта, которые я могу рассмотреть?

  2. Каковы были бы плюсы и минусы с каждой стороны?

  3. Какова стандартная практика?

Сервером, о котором идет речь, может быть VPN-сервер (например, Wireguard) или OpenSSH, который я могу установить вместо Dropbear. Но тот же вопрос возник бы, если бы вы установили сервер потоковой передачи аудио/видео на OpenWrt (предполагая, что это возможно). Другими словами, я хочу, чтобы этот вопрос оставался общим для двух вариантов выше, а не ограничивался каким-либо конкретным программным обеспечением (Wireguard и т. д.).

Я новичок и в OpenWrt, и в Linux. Я не знал о существовании OpenWrt до недавнего времени. Возможно, что вариант A — это бред (то, чего никто никогда не делает), и что мой мозг придумал его только потому, что никогда раньше не видел ничего похожего на OpenWrt и может мыслить только в терминах «обычного маршрутизатора».

На самом деле, это заставляет меня думать, что у варианта А может быть это преимущество. На самом деле я уже делал переадресацию портов, но брандмауэр Linux для меня в новинку. Так что я могу сосредоточиться на правилах трафика, и было бы лучше, если бы путаница происходила только в локальной сети.

Пожалуйста, посоветуйте. Спасибо.

ПРИЛОЖЕНИЕ

Это скриншоты LuCI, иллюстрирующие вариант A (слева) и B (справа). Левая панель предполагает, что порт 12000 открыт для локальной сети (либо политикой по умолчанию, либо определенным правилом трафика). 192.168.1.1. — это IP-адрес локальной сети маршрутизатора.

введите описание изображения здесь

решение1

(Хотя в некоторых браузерах это не видно, каждый путь к файлу является ссылкой)

Для SSH стандартной практикой является указаниеДНКАТправило [переадресация портов] для внутренней сети, в которой он находится; тогда как для VPN-сервера вы бы создали правило, разрешающее WAN-доступ к его серверному порту:

  • Wireguard Вики
  • SSH:
    • /etc/config/firewall:
      #
      
          ##::[[---  OpenWrt WAN Firewall Config  ---]]::##
      
      #===========================================================
                    ##----- NAT Redirects -----##
      #===========================================================
      
      # SSH #
      #-----------------------------------------------------------
      config redirect
          option  target          'DNAT'
          option  proto           'tcp'
          option  src             'wan'
          option  src_dport       60501
          option  dest            'lan'
          option  dest_ip         192.168.1.1
          option  dest_port       22
          option  name            'Allow Redirect WAN → LAN (SSH)'
      
      config redirect
          option  target          'DNAT'
          option  proto           'tcp'
          option  src             'vpn'
          option  src_dport       60502
          option  dest            'lan'
          option  dest_ip         192.168.1.1
          option  dest_port       22
          option  name            'Allow Redirect Wireguard → LAN (SSH)'
      
      #===========================================================
                        ##----- VPN Zones -----##
      #===========================================================
      
      # Wireguard #
      #-----------------------------------------------------------
      config zone
          option  name            'vpn'
          option  network         'vpn'
          option  input           'ACCEPT'
          option  forward         'ACCEPT'
          option  output          'ACCEPT'
          option  log             1
      
      # Rules:
      #-----------------------------------------------------------
      config rule
          option  target          'ACCEPT'
          option  proto           'tcp udp'
          option  src             'wan'
          option  dest            '*'
          option  dest_port       51820
          option  name            'Allow Forwarded Wireguard → Router'
      
      config rule
          option  target          'ACCEPT'
          option  proto           'tcp'
          option  src             'vpn'
          option  dest            '*'
          option  dest_port       60502
          option  name            'Allow Wireguard → Router (SSH)'
      

    • /etc/config/dropbear:
      #
      
            ##::[[---  OpenWrt DropBear Config  ---]]::##
      
      #===========================================================
                       ##----- Default -----##
      #===========================================================
      
      # Server #
      #-----------------------------------------------------------
      config dropbear
          option  enable            1
          option  Interface         'lan'
          option  PasswordAuth      'off'
          option  RootPasswordAuth  'off'
          option  IdleTimeout       0
          option  Port              22
          option  RootLogin         1
          option  SSHKeepAlive      300
          option  verbose           1
      

    • /etc/ssh/sshd_config: (Индивидуальный)
      #
      
          ##::[[---  OpenWrt OpenSSH SSHd Config  ---]]::##
      
      #===========================================================
                    ##----- Global Options -----##
      #===========================================================
      
        # Please verify, as all algorithms may not supported:
      
          # Ciphers:                  # HostKey & KeyTypes
            ## ssh -Q cipher            ## ssh -Q key
      
          # Kex [Key Exchange]        # MAC [Message Authentication Code]
            ## ssh -Q kex               ## ssh -Q mac
      
      
      # Connection #
      #-----------------------------------------------------------
      AddressFamily                     = inet
      ListenAddress                     = 192.168.1.1:22
      
      
      # Encryption #
      #-----------------------------------------------------------
      AuthorizedKeysFile                = /root/.ssh/authorized_keys
      
      HostKey                           = /etc/ssh/ssh_host_ed25519_key
      HostKey                           = /etc/ssh/ssh_host_rsa_key
      
      
      # Authentication #
      #-----------------------------------------------------------
      AllowUsers                        = root
      AllowGroups                       = root
      
      ChallengeResponseAuthentication   = no
      PasswordAuthentication            = no
      PermitEmptyPasswords              = no
      
      StrictModes                       = yes
      PubkeyAuthentication              = yes
      
      LoginGraceTime                    = 30
      
      MaxAuthTries                      = 3
      MaxSessions                       = 10
      MaxStartups                       = 3:30:10
      
      PermitRootLogin                   = prohibit-password
      
      
      # Reliability #
      #-----------------------------------------------------------
      ClientAliveCountMax               = 3
      ClientAliveInterval               = 600
      
      TCPKeepAlive                      = yes
      
      UseDNS                            = yes
      
      
      # Security #
      #-----------------------------------------------------------
      AllowAgentForwarding              = yes
      AllowTcpForwarding                = yes
      
      GatewayPorts                      = clientspecified
      PermitTunnel                      = yes
      
      Subsystem   sftp                  = /usr/lib/sftp-server
      
      RekeyLimit                        = 500M 60m
      
      
      # Logging #
      #-----------------------------------------------------------
      SyslogFacility                    = AUTH
      LogLevel                          = VERBOSE
      
      PidFile                           = /tmp/run/sshd.pid
      
      
      # Ciphers and ReKeying #
      #-----------------------------------------------------------
      FingerprintHash                   = sha256
      
      Ciphers                           = [email protected],[email protected],aes128-ctr,aes128-cbc,aes192-ctr,aes192-cbc,aes256-ctr,aes256-cbc,[email protected]
      
      HostKeyAlgorithms                 = ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
      
      HostbasedAcceptedKeyTypes         = ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
      
      KexAlgorithms                     = [email protected],curve25519-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256
      
      MACs                              = [email protected],[email protected],hmac-sha2-256,hmac-sha2-512
      
      PubkeyAcceptedKeyTypes            = ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
      

  • ЛюСИ:
    1. https://<router IP>Сеть (левое меню)Брандмауэр
    2. Правила дорожного движения
      1. ДОБАВЛЯТЬ:
        Имя: Allow Forwarded Wireguard → Router
        Протокол: TCP UDP
        Зона источника: wan
        Зона назначения: Any zone (forward)
        Порт назначения: 51820
        Действие: accept
        СОХРАНЯТЬ
      2. ДОБАВЛЯТЬ:
        Имя: Allow Wireguard → Router (SSH)
        Протокол: TCP
        Зона источника: vpn
        Зона назначения: Any zone (forward)
        Порт назначения: 60502
        Действие: accept
        СОХРАНЯТЬ

    3. Порт Форварды
      1. ДОБАВЛЯТЬ:
        Имя: Allow Redirect WAN → LAN (SSH)
        Протокол: TCP
        Зона источника: wan
        Внешний порт: 60501
        Зона назначения: lan
        Внутренний IP-адрес: 192.168.1.1
        Внутренний порт: 22
        Действие: accept
        СОХРАНЯТЬ
      2. ДОБАВЛЯТЬ:
        Имя: Allow Redirect VPN → LAN (SSH)
        Протокол: TCP
        Зона источника: vpn
        Внешний порт: 60502
        Зона назначения: lan
        Внутренний IP-адрес: 192.168.1.1
        Внутренний порт: 22
        Действие: accept
        СОХРАНЯТЬ

    4. СОХРАНИТЬ И ПРИМЕНИТЬ

Связанный контент