• Как обойти блокировку провайдера "Ростелеком" для https-сайтов внесенных в реестр запрещенных сайтов?

    HawK3D
    @HawK3D Автор вопроса
    Все оказывается очень просто. Как и в случае с http, DPI провайдера перехватывает запросы абонентов и отправляются поддельные ответы от сервера. В случае https нельзя подменить защищенное содержимое, поэтому отправляется поддельный пакет с флагом RST. Запретив такие пакеты - получаем настоящие ответы от сервера:

    /ip firewall filter
    add action=drop chain=forward disabled=no in-interface=pppoe protocol=tcp src-port=443 tcp-flags=rst packet-size=40 ttl=equal:120

    P.S. Под это правило попадает много пакетов, при этом каких-либо проблем обнаружено не было, но для более точной обработки можно поставить дополнительные условия, в моем случае packet-size=40 и ttl=equal:120 (для windows-систем) и ttl=equal:56 (соответственно для *nix-систем) и теперь счетчик правила увеличивается только при обращении к запрещенным https-сайтам. Правило со значением ttl=56 иногда отрабатывает без необходимости, при этом каких-либо проблем замечено не было. Значения ttl смотрел в поддельных пакетах от провайдера и уменьшал их на 1 в правилах.
    Ответ написан
    4 комментария
  • Как посчитать трафик от IP A до IP B и обратно в Mikrotik?

    @moneron89
    Сертифицированный тренер Mikrotik
    /ip firewall filter
    add chain=forward src-address=10.10.10.10 dst-address=11.11.11.11 action=passthrough comment="upload to 11.11.11.11"
    add chain=forward src-address=11.11.11.11 dst-address=10.10.10.10 action=passthrough comment="download from 11.11.11.11"

    action=passthrough ничего не будет делать с пакетом. Просто его посчитает. Увидите и кол-во пакетов, и кол-во трафика.
    Поднимите правила повыше и смотрите трафик на здоровье.
    Ответ написан
    5 комментариев
  • Объеденить 2 Mikrotik по l2tp+ipsec, почему не создаются sa?

    Nerwin
    @Nerwin Автор вопроса
    И ни капельки я не тупой...просто ленивый
    Все, разобрался.
    готовый конфиг выглядит так
    для сервера
    #все, что касается l2tp
    #пул адресов для l2tp клиентов
    /ip pool
    	add name=vpn-net ranges=192.168.100.2-192.168.100.254
    
    #создадим профиль l2tp сервера
    /ppp profile
    	add name=l2tp-vpn change-tcp-mss=yes local-address=192.168.100.1 only-one=no \
    		remote-address=vpn-net use-encryption=required 
    
    #включим l2tp сервер используя наш профиль, авторизовться клиенты будут по mschap2,
    #mtu от балды, чтобы точно дефрагментации не было
    /interface l2tp-server server
    	set authentication=mschap2 default-profile=l2tp-vpn enabled=yes \
    		max-mru=1300 max-mtu=1300
    
    #пользователи l2tp
    /ppp secret
    	add name=<юзер> password=<пароль> local-address=192.168.100.1 profile=l2tp-vpn \
    		remote-address=192.168.100.2 service=l2tp
    
    #добавим отдельный интерфейс для пользователя юзер
    /interface l2tp-server
    	add name=l2tp-s user=<юзер>
    
    #все, что касается ipsec
    #писали, что в ipsec группе default есть баг, создадим свою
    /ip ipsec policy group
    	add name=l2tp 
    
    #какие алгоритмы шифрования поддерживает сервер (винда sha1-3des, android sha256-aes256cbc)
    /ip ipsec proposal
    	set [ find default=yes ] auth-algorithms=sha1,sha256 enc-algorithms=\
    		3des,aes-128-cbc,aes-256-cbc pfs-group=none
    
    #добавим пира, который будет ждать подключения по ipsec
    /ip ipsec peer
    	add address=0.0.0.0/0 \ #можно подключиться с любого адреса ip
    		enc-algorithm=3des,aes-128,aes-192,aes-256 \ #по умолчанию, используется только во время подключения
    		exchange-mode=main-l2tp \
    		generate-policy=port-override \ #создавать политики автоматически (иногда создаются не правильно)
    		my-id=user-fqdn \
    		passive=yes \ #только слушать
    		policy-template-group=l2tp \
    		secret=<секретное слово>
    
    #добавим политики ipsec	
    /ip ipsec policy
    	#добави стандартную политику шаблон в нашу группу
    	set 0 dst-address=0.0.0.0/0 group=l2tp src-address=0.0.0.0/0
    	#при подклчении политики для клиентов будут создаваться автоматически, но иногда
    	#они создаются с неправильныйми адресами, если так будет, надо добавить политику вручную
    	add dst-address=<белый ip клиента>/32 \ 
    		sa-dst-address=<белый ip клиента> \
    		src-address=<серый ip сервера, на внешнем интерфейсе>/32 \
    		sa-src-address=<серый ip сервера, на внешнем интерфейсе>
    
    #если включен firewall, добавим правила
    #используются порты 500 (для установки соединения ipsec), 4500 (через него передаются данные если включен nat-t), 1701 (l2tp)
    /ip firewall filter
    	add chain=input dst-port=500 in-interface=eth1 protocol=udp
    	add chain=input dst-port=4500 in-interface=eth1 protocol=udp
    	add chain=input dst-port=1701 in-interface=eth1 protocol=udp


    для клиента
    #все, что касается l2tp
    #создадим профиль подключения
    /ppp profile
    	add name=vpnc use-compression=yes use-encryption=required use-mpls=yes
    
    #создадим клиента используя наш профиль
    /interface l2tp-client
    	add allow=mschap2 \
    		name=l2tp-c \
    		connect-to=<белый ip сервера> \
    		disabled=no \
    		keepalive-timeout=disabled \
    		max-mru=1300 \
    		max-mtu=1300 \
    		password=<пароль> \
    		profile=vpnc \
    		user=<юзер>
    
    #все, что касается ipsec
    #как и в случае с сервером создадим отдельную группу
    /ip ipsec policy group
    	add name=l2tp
    
    #какие алгоритмы шифрования поддерживает клиент (хотя бы 1 из них должен быть и на сервере)
    /ip ipsec proposal
    	set [ find default=yes ] enc-algorithms=aes-128-cbc pfs-group=none
    
    #создадим пира, который будет подключаться
    /ip ipsec peer
    	add address=<белый ip сервера>/32 \
    		enc-algorithm=3des,aes-128,aes-192,aes-256 \ #это все по умолчанию, как и у пира на сервере
    		exchange-mode=main-l2tp \
    		generate-policy=port-override \ #может и не надо, все равно вручную создается
    		local-address=0.0.0.0 \
    		my-id=user-fqdn \
    		policy-template-group=l2tp \
    		secret=<секретное слово, как и на сервере>
    
    #создадим политики
    /ip ipsec policy
    	#как и на сервере, добавим стандартный шаблон в нашу группу
    	set 0 dst-address=0.0.0.0/0 group=l2tp src-address=0.0.0.0/0
    	#наша политика для подключения
    	add dst-address=<белый ip сервера>/32 \
    		dst-port=1701 \
    		src-address=<серый ip клиента, на внешнем интерфейсе>/32 \
    		src-port=1701
    		sa-dst-address=<белый ip сервера> \
    		sa-src-address=<белый ip клиента> \
    
    #если планируется пускать весь траффик по vpn, оставим траффик к серверу через основной шлюз
    /ip route
    	add distance=1 dst-address=<белый ip сервера>/32 gateway=<наш шлюз>
    Ответ написан
    5 комментариев
  • IPSec + Mikrotik, почему не работает?

    Largo1
    @Largo1
    Айтишник далёкого плана
    xx.xx.xx.xx белый ip первого офиса, yy.yy.yy.yy - второго, 192.168.1.x подсеть первого офиса, 192.168.87.x - второго
    первый офис - ведущий маршрутизатор, второй - ведомый
    транспортная подсеть - 192.168.222.x

    ***ТРАНСПОРТ***

    на первом маршрутизаторе:

    /interface pptp-server server set enabled=yes

    создаём на этом сервере профиль и аккаунт:

    /ppp profile add name=RemoteOffice only-one=yes use-compression=yes use-encryption=yes use-vj-compression=yes comment="Profile for RemoteOffice"

    /ppp secret add name=RemoteOfficeLogin password=RemoteOfficePassword local-address=192.168.222.100 remote-address=192.168.222.200 service=pptp profile=RemoteOffice comment="PPTP for RemoteOffice"

    для клиента хорошо бы создать "собственный PPTP сервер":

    /interface pptp-server add name=RemoteOffice user=RemoteOfficeLogin comment="PPTP Server for RemoteOffice"

    на файерволе первого маршрутизатора открываем нужные порты:

    /ip firewall filter add chain=input action=accept protocol=udp port=1701,500,4500 comment="Allow for PPTP Server"

    на мосту включаем proxy-arp:

    /interface bridge set 0 arp=proxy-arp

    на втором маршрутизаторе добавляем новый интерфейс для подключения к нашему первому маршрутизатору:

    /interface pptp-client add name=RemoteOffice connect-to=xx.xx.xx.xx user=RemoteOfficeLogin password=RemoteOfficePassword allow=mschap2 disabled=no comment="PPTP to MainOffice"

    всё, линк есть

    ***IPSEC***

    на первом маршрутизаторе

    /ip firewall nat add chain=srcnat src-address=192.168.1.0/24 dst-address=192.168.87.0/24 out-interface=RemoteOffice action=masquerade comment="Nat for RemoteOffice"

    /ip ipsec proposal add name=prop_2 auth-algorithms=sha1 enc-algorithms=3des lifetime=30m pfs-group=modp1024

    /ip ipsec policy add src-address=192.168.1.0/24 dst-address=192.168.87.0/24 action=encrypt tunnel=yes sa-src-address=192.168.222.100 sa-dst-address=192.168.222.200 proposal=prop_2 level=require comment="Policy for RemoteOffice"

    /ip ipsec peer add auth-method=pre-shared-key policy-template-group=default exchange-mode=aggressive send-initial-contact=yes nat-traversal=yes proposal-check=obey hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 generate-policy=port-override lifetime=1d dpd-interval=120 dpd-maximum-failures=5 address=192.168.222.200 port=500 secret="dJt2wkSvD582" comment="Peer for RemoteOffice"

    на втором маршрутизаторе

    /ip firewall nat add chain=srcnat src-address=192.168.87.0/24 dst-address=192.168.1.0/24 out-interface=RemoteOffice action=masquerade

    /ip ipsec proposal add name=prop_2 auth-algorithms=sha1 enc-algorithms=3des lifetime=30m pfs-group=modp1024

    /ip ipsec policy add src-address=192.168.87.0/24 dst-address=192.168.1.0/24 action=encrypt tunnel=yes sa-src-address=192.168.222.200 sa-dst-address=192.168.222.100 proposal=prop_2 level=require

    /ip ipsec peer add auth-method=pre-shared-key policy-template-group=default exchange-mode=aggressive send-initial-contact=yes nat-traversal=yes proposal-check=obey hash-algorithm=sha1 enc-algorithm=3des dh-group=modp1024 generate-policy=port-override lifetime=1d dpd-interval=120 dpd-maximum-failures=5 address=192.168.222.100 port=500 secret="dJt2wkSvD582" comment="Peer for MainOffice"

    всё, траффик зашифрован
    Ответ написан
    4 комментария
  • Как сделать проброс портов в Mikrotik при обращении из локалки?

    EvilMan
    @EvilMan
    Маскардинг не работает в вашем случае. Добавляйте явное правило SNAT для таких пакетов.
    В общем, всё выглядит примерно так.
    1. LAN client -> Mikrotik, 192.168.0.100:4555 -> 1.2.3.4:87 (на роутере у этого пакета будет in-interface ether2, так как пакет действительно прилетел из локальной сети) - если в правиле указано сопоставление пакета по входящему интерфейсу для dst-nat (логичнее предположить, что он у вас указан как ether1), то никакого перенаправления не будет. Либо заводите два правила, либо не проверяете для перенаправляемых пакетов входящий интерфейс, а только адрес назначения, протокол и порт. Двигаемся дальше.

    2. Mikrotik -> LAN server, 192.168.0.100:4555 -> 192.168.0.2:87 (output-interface ether2) - Победили перенаправление и пакеты теперь успешно улетают в локалку после замены адреса назначения (в том-то и суть dst-nat). Но что будет дальше? Локальный сервак получает перенаправленный через роутер пакет и отвечает на него напрямую в обход роутера.

    3. LAN server -> LAN client, 192.168.0.2:87 -> 192.168.0.100:4555 - Это ответный пакет от сервера. Но клиент ожидает пакеты с адресом источника 1.2.3.4, а не эти, и отбрасывает их. Либо молча, либо явно с посылкой ICMP-сообщения.

    Вот такие дела. Отсюда решение. Правила ната на микротике.
    1. Правило для проброса портов из интернета:
    chain = nat/prerouting,
      input-interface = ether1, 
      dst-ip = 1.2.3.4, 
      protocol = tcp, 
      dst-port = 87, 
      action = dst-nat, 
      dst-nat-address = 192.168.0.2, 
      dst-nat-port = 87.

    2. Правило для проброса портов из локалки:
    chain = nat/prerouting
      input-interface = ether2, 
      dst-ip 1.2.3.4, 
      src-ip = 192.168.0.0/24, 
      protocol = tcp, 
      dst-port = 87, 
      action = dst-nat, 
      dst-nat-address = 192.168.0.2, 
      dst-nat-port = 87.

    3. Правило для source-nat, чтобы ответные пакеты сервера так же пошли через роутер:
    chain = nat/postrouting,
      output-interface = ether2, 
      dst-ip = 192.168.0.2, 
      src-ip = 192.168.0.0/24, 
      protocol = tcp, 
      dst-port = 87, 
      action = src-nat, 
      src-nat-address = 192.168.0.1

    Вот как-то так. Можно, кстати, пакеты из локалки в локалку метить в цепочке FORWARD и уже на основе метки делать src-nat.
    Ответ написан
    7 комментариев