Ниже — понятное пошаговое объяснение и конкретные команды. Сначала — коротко о том, как всё работает, потом — готовые примеры под типичную схему (LAN 192.168.1.0/24, сервер 192.168.1.10, внешний интерфейс Dialer0).
Ключевые моменты
- HTTP = TCP порт 80. UDP — отдельный протокол, и его порты указываются отдельной командой.
- На Cisco вы используете:
- ACL (ip access-list … или access-list N …) чтобы разрешать/запрещать трафик;
- ip nat inside / ip nat outside на интерфейсах;
- ip nat inside source static tcp|udp … interface … для проброса порта (если у вас один внешний IP).
- Синтаксис расширенного ACL: permit <prot> <src> <src-wildcard> <dst> <dst-wildcard> [eq <порт>]
Пример корректной строки: permit tcp 192.168.1.0 0.0.0.255 any eq 80
Если у вас была синтаксическая ошибка при вводе permit …:
- Убедитесь, что вы в режиме глобальной конфигурации (configure terminal), и если вы используете именованный ACL — в режиме ip access-list extended NAME — затем вводите строки permit. Альтернативно можно использовать numbered ACL: access-list 101 permit tcp 192.168.1.0 0.0.0.255 any eq 80.
Пример 1 — разрешить исходящие HTTP/UDP из LAN и ответы (обычно NAT + stateful трансляция позволяют ответы без дополнительных правил)
(замените FastEthernet0/Dialer0/адреса на ваши)
configure terminal
! пометить интерфейсы
interface FastEthernet0
ip address 192.168.1.1 255.255.255.0
ip nat inside
!
interface Dialer0
ip address dhcp
ip nat outside
!
! если у вас нет ACL, исходящие соединения и так обычно проходят; но если нужен контроль:
ip access-list extended LAN-OUT
permit tcp 192.168.1.0 0.0.0.255 any eq 80
permit udp 192.168.1.0 0.0.0.255 any eq 1234 ! пример UDP-порта 1234
deny ip any any
!
interface FastEthernet0
ip access-group LAN-OUT out
end
Пример 2 — проброс порта (внешний интернет -> ваш внутренний сервер) и ограничение доступа только для заданного диапазона внешних IP
Сценарий: у вас внешний интерфейс Dialer0 с публичным IP, внутри сервер 192.168.1.10. Разрешаем доступ к TCP 80 и UDP 5000 только из внешней подсети 203.0.113.0/24.
configure terminal
! интерфейсы и NAT
interface FastEthernet0
ip address 192.168.1.1 255.255.255.0
ip nat inside
!
interface Dialer0
ip address dhcp
ip nat outside
!
! проброс портов: внешний IP (интерфейс) -> внутренний хост
ip nat inside source static tcp 192.168.1.10 80 interface Dialer0 80
ip nat inside source static udp 192.168.1.10 5000 interface Dialer0 5000
!
! ACL на внешнем интерфейсе: разрешаем только нужный источник в направлении к внешнему интерфейсу (in)
ip access-list extended WAN-IN
permit tcp 203.0.113.0 0.0.0.255 host <ваш_внешний_IP> eq 80
permit udp 203.0.113.0 0.0.0.255 host <ваш_внешний_IP> eq 5000
deny ip any any
!
interface Dialer0
ip access-group WAN-IN in
end
Примечания и советы
- В ACL порядок важен: первый подходящий мач даёт действие. В конце implicit deny ip any any.
- В строке ACL dst можно писать host 192.168.1.10 (для внутреннего адреса) или host <внешний_IP>. Если вы используете NAT-to-interface (ip nat inside source static ... interface Dialer0), тогда трафик приходит на внешний IP интерфейса — ACL, применённый inbound на внешнем интерфейсе, должен смотреть на этот внешний IP как на dst.
- Если у вас динамический внешний IP (Dialer0 получает по DHCP), используйте interface адрес в командах NAT (как в примере) — но в ACL придётся подставить реальный внешний IP. Можно временно разрешить по dst any и ограничить исходниками, но это менее безопасно.
- Альтернативный способ ввода ACL (если пробовали и у вас была ошибка): в глобальном режиме можно сделать:
access-list 101 permit tcp 192.168.1.0 0.0.0.255 any eq 80
затем interface FastEthernet0; ip access-group 101 out
Номерной ACL иногда удобнее для быстрой проверки.
Если пришлёте:
- точные имена интерфейсов (какой интерфейс — внешний у вас: Dialer0 / FastEthernet4 / GigabitEthernet0 и т.п.),
- внутренний сервер (IP) и какой UDP‑порт нужно открыть,
- диапазон внешних IP, который нужно разрешить,
я подготовлю точный минимальный конфиг, ready-to-paste.