SmartEdge NAT vs. PPTP/GRE

Ericsson SmartEdge 600 как и другие аппаратные BRAS, всецело и полностью поддерживает стандартизованные протоколы и не очень дружит с вендор-специфичными. Например PPTP, тунельный протокол работающий поверх GRE, придуман был компанией CISCO и «перелицензирован» Microsoft в далекие времена, для удаленного подключения. Последняя в свою очередь добавила свои патентованные «плюшки». На замену был создан стандартизованный протокол L2TP, как более универсальный, который позволял использовать туннели поверх UDP.
Кое-где до сих пор применяется PPTP для удаленного доступа к защищенным узлам или сетям. Абоненты с «серыми» адресами находящиеся за SmartEdge будут испытывать трудности с подключением, протокол GRE «не сможет пройти» через NАТ. Ситуацию можно решить следующим путем, возьмем софтроутер и завернем на него данный тип трафика (инициация — tcp port 1723 и протокол GRE), в обход центрального NAT. В силу мизерных объемов трафика это может быть малопроизводительный софтроутер, например Juniper SRX100 или даже обычная Unix машина

Для начала исключим pptp тунели из NAT:
policy access-list nat-acl
  seq 10 permit tcp 10.1.0.0 0.0.255.255 any eq 1723 class DO-NOT-NAT
  seq 20 permit gre 10.1.0.0 0.0.255.255 any class DO-NOT-NAT
  seq 30 permit ip 10.1.0.0 0.0.255.255 any class NAT-CLASS

Вариант 1:
nat policy NAT-1
  connections tcp maximum 2000
## важно задать, иначе не работает admission-control
  connections udp maximum 2000
  connections icmp maximum 20
! Default class
  ignore
! Named classes
 access-group nat-acl
  class NAT-CLASS
  pool NAT-POOL local
  timeout tcp 18000
  timeout udp 60
  timeout fin-reset 60
  timeout icmp 30
  timeout syn 60
  admission-control tcp
  admission-control udp
  admission-control icmp
  endpoint-independent filtering udp

В данном варианте, трафик подпадающий под класс — NAT-CLASS поступает на NAT, с остальным по действию в дефолт классе не совершаются никакие действия, пропускается дальше.
Вариант2:
nat policy NAT-1
  connections tcp maximum 2000
## важно задать, иначе не работает admission-control
  connections udp maximum 2000
  connections icmp maximum 20
! Default class
  drop
! Named classes
 access-group nat-acl
  class NAT-CLASS
  pool NAT-POOL local
  timeout tcp 18000
  timeout udp 60
  timeout fin-reset 60
  timeout icmp 30
  timeout syn 60
  admission-control tcp
  admission-control udp
  admission-control icmp
  endpoint-independent filtering udp
  class DO-NOT-NAT
  ignore
В данном варианте, трафик класса NAT-CLASS поступает в NAT, трафик класса DO-NOT-NAT пропускается, весь остальной трафик отбрасывается.

Далее завернем этот тип трафика на Juniper SRX100.

policy access-list FWD-GRE
  seq 10 permit gre 10.1.0.0 0.0.255.255 any class CLS-GRE
  seq 20 permit tcp 10.1.0.0 0.0.255.255 any eq 1723 class CLS-1723
  seq 30 permit ip any any class CLS-IP
!
! ** End Context **
!
forward policy GRE-PBR
 ip access-group FWD-GRE local
  class CLS-GRE
  redirect destination next-hop 192.168.0.34
  class CLS-1723
  redirect destination next-hop 192.168.0.34
  class CLS-IP

Привяжем политики форварда и НАТ на абонента.
 subscriber default
  ip source-validation
## обязательно включить sav
  nat policy-name NAT-1
  forward policy GRE-PBR in


Данная схема может использоваться и на Ericsson SmartEdge 100, софтроутер может быть любой, как SRX100 так и PC с FreeBSD.