Добрый день всем,
Четвертый день уже мучаюсь с настройкой policy based routing на hAP AC Lite, получаю странный и непонятный результат. Сделать пытаюсь обход блокировок на роутере через VPN для всех компьютеров в локальной сети. Для этого сделал следующее:
1. В качестве DNS указал сервера Google и OpenDNS.
2. Настроил VPN (сейчас это L2TP, но пробовал OVPN, PPTP, результат один). Сам по себе VPN работает, название интерфейса (чтобы понятно было в конфигах ниже) HMA_L2TP, однако интернет через него не работает, если при создании не ставить галку Add default gateway. А если ставить, пропадает весь смысл затеи (об этом ниже).
3. Создал список адресов:
Код: Выделить всё
/ip firewall address-list
add address=195.82.146.214 comment="RCN Blacklist" list=rcn
add address=108.174.10.10 list=rcn
add address=23.22.128.188 list=rcn
add address=31.192.120.36 list=rcn
4. Создал правило в Firewall Mangle:
Код: Выделить всё
add action=mark-routing chain=prerouting comment="Mark for L2TP" dst-address-list=rcn in-interface=bridge log=yes log-prefix=rcn new-routing-mark=L2TP passthrough=yes
5. Создал правило в Firewall NAT:
Код: Выделить всё
add action=masquerade chain=srcnat comment="Masquerade for L2TP" log=yes out-interface=HMA_L2TP
На этом как бы все должно бы заработать, если верить многочисленным мануалам и туториалам, включая тому, который приведен на этом сайте, но нет. Происходит следующее - если в настройках VPN ставить галку Add default gateway, то трафик, как положено, идет через VPN в обход всех блокировок, но, разумеется, весь без исключений. При этом таблица маршрутизации выглядит так:
Код: Выделить всё
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
1 ADS 0.0.0.0/0 10.200.24.1 0
2 DS 0.0.0.0/0 192.168.100.1 1
3 ADC 10.200.24.1/32 10.200.25.5 HMA_L2TP 0
4 ADS 72.8.134.120/32 192.168.100.1 0
5 ADC 192.168.88.0/24 192.168.88.1 bridge 0
6 ADC 192.168.100.0/24 192.168.100.14 ether1 0
Если же галку не ставить, а маршрут к 0.0.0.0/0 для routing-mark L2TP прописать вручную, то сайты из списка ведут себя странно - некоторые вообще не открываются, некоторые через какое-то время идут через ether1 и показывают страницу блокировки. Сайты не из списка открываются нормально. При этом самое странное то, что в логах я вижу, что маркировка происходит, правило для NAT работает, отправляются куда положено всякие ACK и SYN, потом, где-то через минуту, RST. Если с компьютера в локальной сети сделать traceroute, то маршрут к сайтам из списка получается через VPN, как положено, к обычным сайтам - через ether1. Таблица маршрутизации при этом выглядит так:
Код: Выделить всё
1 A S 0.0.0.0/0 HMA_L2TP 1
2 ADS 0.0.0.0/0 192.168.100.1 1
3 ADC 10.200.24.1/32 10.200.25.3 HMA_L2TP 0
4 ADC 192.168.88.0/24 192.168.88.1 bridge 0
5 ADC 192.168.100.0/24 192.168.100.14 ether1 0
Команда print в терминале не показывает все, но первый маршрут имеет routing-mark=L2TP, как положено, и все reachable. IP адреса у VPN динамические, поэтому просто прописать их не получится.
Что я делаю не так?
Заранее спасибо!
# nov/23/2016 20:49:23 by RouterOS 6.37.1
# software id = YC28-MXEQ
#
/interface bridge
add admin-mac=6C:3B:6B:55:93:F5 auto-mac=no comment=defconf name=bridge
/interface ethernet
set [ find default-name=ether2 ] name=ether2-master
set [ find default-name=ether3 ] master-port=ether2-master
set [ find default-name=ether4 ] master-port=ether2-master
set [ find default-name=ether5 ] master-port=ether2-master
/interface l2tp-client
add connect-to=ca.us.hma.rocks disabled=no mrru=1500 name=HMA_L2TP password=***** user=*****
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-Ce country=russia distance=indoors frequency=auto mode=ap-bridge ssid=DC wireless-protocol=802.11
set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=20/40mhz-Ce country=russia disabled=no distance=indoors frequency=auto mode=ap-bridge ssid=DC wireless-protocol=802.11
/ip neighbor discovery
set ether1 discover=no
set bridge comment=defconf
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=dynamic-keys supplicant-identity=MikroTik wpa-pre-shared-key=***** wpa2-pre-shared-key=*****
/ip hotspot profile
set [ find default=yes ] html-directory=flash/hotspot
/ip pool
add name=dhcp ranges=192.168.88.10-192.168.88.254
/ip dhcp-server
add address-pool=dhcp disabled=no interface=bridge name=defconf
/ppp profile
set *0 dns-server=208.67.222.220,208.67.222.222
add change-tcp-mss=no dns-server=8.8.8.8,8.8.4.4 name="HMA OVPN" only-one=no use-encryption=yes use-upnp=no
set *FFFFFFFE dns-server=208.67.222.220,208.67.222.222 only-one=no
/interface ovpn-client
add add-default-route=yes certificate=hmauser.cer_0 cipher=aes256 connect-to=ca.us.hma.rocks disabled=yes mac-address=02:72:F5:DA:25:14 name=HMA_OVPN password=***** port=443 profile="HMA OVPN" user=*****
/interface bridge port
add bridge=bridge comment=defconf interface=ether2-master
add bridge=bridge comment=defconf interface=wlan1
add bridge=bridge comment=defconf interface=wlan2
/ip address
add address=192.168.88.1/24 comment=defconf interface=ether2-master network=192.168.88.0
/ip dhcp-client
add comment=defconf dhcp-options=hostname,clientid disabled=no interface=ether1 use-peer-dns=no
/ip dhcp-server lease
add address=192.168.88.254 client-id=1:4c:b:be:2e:82:eb mac-address=4C:0B:BE:2E:82:EB server=defconf
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf gateway=192.168.88.1 netmask=24
/ip dns
set allow-remote-requests=yes servers=208.67.222.220,208.67.222.222,8.8.8.8,8.8.4.4
/ip dns static
add address=192.168.88.1 name=netet.local
add address=192.168.88.251 name=dcbrain.local
add address=192.168.88.254 name=dcsurface.local
add address=192.168.88.1 name=dcnet.local
add address=208.67.222.222 name=OpenDNS
add address=208.67.220.220 name=OpenDNS2
add address=8.8.8.8 name=Google1
add address=8.8.4.4 name=Google2
/ip firewall address-list
add address=195.82.146.214 comment="RCN Blacklist" list=rcn
add address=108.174.10.10 list=rcn
add address=23.22.128.188 list=rcn
add address=31.192.120.36 list=rcn
/ip firewall filter
add action=drop chain=input comment="Drop remote telnet" dst-port=23 in-interface=ether1 log=yes protocol=tcp
add action=drop chain=input comment="Drop remote ftp" dst-port=21 in-interface=ether1 log=yes protocol=tcp
add action=drop chain=input comment="Drop remote ssh" dst-port=22 in-interface=ether1 log=yes protocol=tcp
add action=drop chain=input comment="Drop remote api" dst-port=8728 in-interface=ether1 log=yes protocol=tcp
add action=drop chain=input comment="Drop remote api-ssl" dst-port=8729 in-interface=ether1 log=yes protocol=tcp
add action=accept chain=input comment="Allow remote Winbox" dst-port=8291 protocol=tcp
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment="defconf: accept ICMP on L2TP" in-interface=HMA_L2TP protocol=icmp
add action=accept chain=input comment="defconf: accept establieshed,related" connection-state=established,related
add action=accept chain=input comment="defconf: accept establieshed,related on L2TP" connection-state=established,related in-interface=HMA_L2TP
add action=drop chain=input comment="defconf: drop all from WAN" in-interface=ether1 log=yes
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" connection-state=established,related
add action=accept chain=forward comment="defconf: accept established,related" connection-state=established,related log=yes
add action=accept chain=forward comment="defconf: accept established,related on L2TP" connection-state=established,related in-interface=HMA_L2TP log=yes
add action=drop chain=forward comment="defconf: drop invalid" connection-state=invalid log=yes
add action=drop chain=forward comment="defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat connection-state=new in-interface=ether1 log=yes
add action=accept chain=forward disabled=yes out-interface=HMA_L2TP routing-mark=L2TP
add action=accept chain=forward disabled=yes out-interface=ether1 routing-mark=main
/ip firewall mangle
add action=mark-routing chain=prerouting comment="Mark for OVPN" disabled=yes dst-address-list=rcn new-routing-mark=OpenVPN passthrough=no src-address=192.168.88.2-192.168.88.254
add action=mark-routing chain=prerouting comment="Mark for main" disabled=yes dst-address-list=!rcn new-routing-mark=main passthrough=yes src-address=192.168.88.2-192.168.88.254
add action=mark-routing chain=prerouting disabled=yes dst-address-list=!rcn new-routing-mark=main passthrough=yes
add action=mark-routing chain=prerouting comment="Mark for L2TP" dst-address-list=rcn in-interface=bridge log=yes log-prefix=rcn new-routing-mark=L2TP passthrough=yes
add action=mark-routing chain=prerouting disabled=yes dst-address-list=!rcn new-routing-mark=main passthrough=yes src-address=192.168.88.2-192.168.88.254
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" out-interface=ether1
add action=masquerade chain=srcnat comment="Masquerade for OVPN" disabled=yes out-interface=HMA_OVPN src-address=192.168.88.2-192.168.88.254
add action=masquerade chain=srcnat comment="Masquerade for L2TP" log=yes out-interface=HMA_L2TP
add action=accept chain=dstnat disabled=yes in-interface=ether1 routing-mark=L2TP
/ip route
add check-gateway=ping distance=1 gateway=HMA_L2TP routing-mark=L2TP
add check-gateway=arp disabled=yes distance=1 gateway=HMA_OVPN routing-mark=OpenVPN
/ip route rule
add disabled=yes interface=HMA_OVPN routing-mark=OpenVPN table=OpenVPN
add disabled=yes interface=ether1 routing-mark=main table=main
add action=lookup-only-in-table disabled=yes interface=HMA_L2TP routing-mark=L2TP table=L2TP
/ip upnp
set enabled=yes
/ip upnp interfaces
add interface=bridge type=internal
add interface=ether1 type=external
/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow
/system identity
set name=DCNet
/system ntp client
set enabled=yes primary-ntp=13.80.12.54 secondary-ntp=213.249.66.35
/system routerboard settings
set cpu-frequency=650MHz init-delay=0s protected-routerboot=disabled
/tool mac-server
set [ find default=yes ] disabled=yes
add interface=bridge
/tool mac-server mac-winbox
set [ find default=yes ] disabled=yes
add interface=bridge