![Должен ли я предоставить доступ к серверу на OpenWrt через WAN или только через LAN с переадресацией портов из WAN?](https://rvso.com/image/1654783/%D0%94%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD%20%D0%BB%D0%B8%20%D1%8F%20%D0%BF%D1%80%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%20%D0%BA%20%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D1%83%20%D0%BD%D0%B0%20OpenWrt%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20WAN%20%D0%B8%D0%BB%D0%B8%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D1%87%D0%B5%D1%80%D0%B5%D0%B7%20LAN%20%D1%81%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D0%B5%D0%B9%20%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2%20%D0%B8%D0%B7%20WAN%3F.png)
Если бы я установил сервер на компьютере за маршрутизатором и захотел бы разрешить подключение к нему из Интернета, мне пришлось бы сделать две вещи: во-первых, открыть брандмауэр на сервере, чтобы разрешить входящее подключение; и, во-вторых, настроить правило переадресации портов на маршрутизаторе, чтобы подключение могло идти из WAN в LAN (конкретно к серверу).
Но что делать, если рассматриваемый серверный компьютер сам по себе является маршрутизатором, работающим на OpenWrt?
Я могу предложить два варианта.
Вариант A. Относитесь к маршрутизатору как к любому другому компьютеру в локальной сети. После установки сервера на маршрутизаторе откройте брандмауэр, чтобы разрешить входящие соединения из локальной сети на сервер. (Я полагаю, это делается в LuCI > Сеть > Брандмауэр > Правила трафика.) Затем настройте правило переадресации портов из WAN в локальную сеть (в частности, на сервер). (LuCI > Сеть > Брандмауэр > Переадресация портов.)
Вариант Б. Используйте вкладку «Правила трафика» LuCI, чтобы открыть брандмауэр для подключения из WAN напрямую к серверу.
Вопросы следующие:
Прав ли я, полагая, что это два варианта, которые я могу рассмотреть?
Каковы были бы плюсы и минусы с каждой стороны?
Какова стандартная практика?
Сервером, о котором идет речь, может быть 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
- ЛюСИ:
https://<router IP>
→Сеть (левое меню)→Брандмауэр- Правила дорожного движения
- ДОБАВЛЯТЬ:
Имя:Allow Forwarded Wireguard → Router
Протокол:TCP UDP
Зона источника:wan
Зона назначения:Any zone (forward)
Порт назначения:51820
Действие:accept
СОХРАНЯТЬ - ДОБАВЛЯТЬ:
Имя:Allow Wireguard → Router (SSH)
Протокол:TCP
Зона источника:vpn
Зона назначения:Any zone (forward)
Порт назначения:60502
Действие:accept
СОХРАНЯТЬ
- ДОБАВЛЯТЬ:
- Порт Форварды
- ДОБАВЛЯТЬ:
Имя:Allow Redirect WAN → LAN (SSH)
Протокол:TCP
Зона источника:wan
Внешний порт:60501
Зона назначения:lan
Внутренний IP-адрес:192.168.1.1
Внутренний порт:22
Действие:accept
СОХРАНЯТЬ - ДОБАВЛЯТЬ:
Имя:Allow Redirect VPN → LAN (SSH)
Протокол:TCP
Зона источника:vpn
Внешний порт:60502
Зона назначения:lan
Внутренний IP-адрес:192.168.1.1
Внутренний порт:22
Действие:accept
СОХРАНЯТЬ
- ДОБАВЛЯТЬ:
- СОХРАНИТЬ И ПРИМЕНИТЬ