configure terminal {# cgn предположительно есть только на asr #} !!! включаем режим провайдерского нат с изменением src портов абонов !!! также этот нат будет сам раскидывать абонов между реальными ip !!! раскидывает последовательно, поэтому первые абоны будут иметь общий адрес, это нормально ip nat settings mode cgn !!! это по идее и так должно выключиться при включении cgn, но так более явно no ip nat settings support mapping outside {# bind-only требуется ios 15.3 и выше для этой команды #} {# ip nat log translations flow-export v9 предположительно есть только на asr #} !!! включаем возможность отправлять назначенные nat адреса и порты по nf9(7200 может загнуться) @@@ if nat_netflow == '1' ip nat log translations flow-export v9 udp destination {{billing_ip}} 9996 source {{to_billing_int}} bind-only @@@ else !!! старые cisco умеют только через syslog отправлять nat logging on logging host {{billing_ip}} ip nat log translations syslog bind-only !!! циску порвет без bind-only ios 15.3 ip nat log translations syslog no logging console @@@ endif !!! выставляем таймауты для нат сессий для защиты от торрент и сканов, все настройки с боевых cisco и менять не рекомендуется ip nat translation timeout 300 ip nat translation tcp-timeout 12000 ip nat translation pptp-timeout 12000 ip nat translation udp-timeout 60 ip nat translation syn-timeout 10 ip nat translation dns-timeout 10 ip nat translation icmp-timeout 10 ip nat translation port-timeout tcp 80 180 ip nat translation port-timeout tcp 8080 180 ip nat translation port-timeout tcp 1600 180 ip nat translation port-timeout tcp 110 180 ip nat translation port-timeout tcp 25 180 ip nat translation finrst-timeout 10 !!! максимальное колво нат сессий, на мощных cisco это можно увеличить ip nat translation max-entries 500000 !!! максимальное колво сессий на одного абонента, чтоб он не занял все сессии ната !!! all-host требуется ios 15.3 и выше для этой команды ip nat translation max-entries all-host 500 !!! цикл создания белых адресов КОТОРЫМИ будем натить абонентов @@@ for policy in nat_policy !!! создаем acl список серых адресов, тех КОГО будем натить !!! по дефлту схемы это все серые сети no ip access-list extended ACL_NAT_{{policy.name}} ip access-list extended ACL_NAT_{{policy.name}} @@@ for net in local_net no deny ip any {{net}} deny ip any {{net}} @@@ endfor @@@ for net in policy.abon_pool or gray_net no permit ip {{net}} any permit ip {{net}} any @@@ endfor !!! очистим все трансляции иначе не даст пересоздать pool do clear ip nat translation forced !!! создаем pool адресов которыми будем натить no ip nat pool NAT_POOL_{{policy.name}} netmask {{policy.mask}} ip nat pool NAT_POOL_{{policy.name}} netmask {{policy.mask}} @@@ for range in policy.nat_range address {{range.replace("-", " ")}} @@@ endfor !!! говорим что натить эти серые acl этими nat pool ами no ip nat inside source list ACL_NAT_{{policy.name}} pool NAT_POOL_{{policy.name}} vrf {{vrf}} overload ip nat inside source list ACL_NAT_{{policy.name}} pool NAT_POOL_{{policy.name}} vrf {{vrf}} overload @@@ endfor ! ! @@@ for int_outside in uplink_ints int {{int_outside}} ip nat outside @@@ endfor ! do clear ip nat translation forced end exit