MANUAL: Mikrotik, WireGuard VPN a fondo (RW + STS)

Le he pegado una vuelta a la config y medio me funciona.
He separado en dos bridges todo el tinglado, sobre uno te conectas directo y con el otro por la vpn con dos rangos 192.168.100.x sin vpn 192.168.101.x con vpn.
Ahora funciona bien, eso si he necesitado una regla de masquerade para el tráfico sin vpn y otra para el con, rangos de ip diferentes, si trato de hacer masquerade sin origen a WAN, solo funciona el tráfico sin vpn.
El único problema es que usando el bridge-wg, sale por el gateway a internet y la red remota, pero no puedo conectar con otras ip del mismo rango, no deja acceder a la gestión del router, pero si del router remoto. Parece que las IPs del rango 192.168.101.0/24 quedan al usar la tabla WG aisladas.

Te adjunto la export.

Código:
/interface bridge
add name=bridge
add name=bridge_wg
/interface wireguard
add listen-port=31221 mtu=1420 name=WG
/interface list
add name=WAN
add name=LAN
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n disabled=no frequency=2437 \
    security-profile="WLAN1" ssid="WLAN1" wireless-protocol=\
    802.11
set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=\
    20/40/80mhz-XXXX country=spain disabled=no frequency=auto installation=\
    indoor mode=ap-bridge security-profile=Viaxe ssid=Viaxe \
    wireless-protocol=802.11 wps-mode=disabled
add disabled=no keepalive-frames=disabled mac-address=2E:C8:1B:C9:11:FD \
    master-interface=wlan1 multicast-buffering=disabled name=Viaxe1 \
    security-profile=Viaxe ssid=viaxe wds-cost-range=0 wds-default-cost=0 \
    wps-mode=disabled
add disabled=no keepalive-frames=disabled mac-address=2E:C8:1B:C9:11:FE \
    master-interface=wlan1 multicast-buffering=disabled name=Viaxe_WG1 \
    security-profile=Viaxe ssid=Viaxe_WG wds-cost-range=0 wds-default-cost=0 \
    wps-mode=disabled
add disabled=no keepalive-frames=disabled mac-address=2E:C8:1B:C9:11:FE \
    master-interface=wlan2 multicast-buffering=disabled name=Viaxe_WG2 \
    security-profile=Viaxe ssid=Viaxe_WG wds-cost-range=0 wds-default-cost=0 \
    wps-mode=disabled
/ip pool
add name=dhcp ranges=192.168.100.50-192.168.100.200
add name=dhcp_wg ranges=192.168.101.50-192.168.101.200
/ip dhcp-server
add address-pool=dhcp interface=bridge name=lan
add address-pool=dhcp_wg interface=bridge_wg name=lan_wg
/routing table
add disabled=no fib name=WG
/interface bridge port
add bridge=bridge interface=ether2
add bridge=bridge interface=ether3
add bridge=bridge_wg interface=ether4
add bridge=bridge_wg interface=ether5
add bridge=bridge interface=Viaxe1
add bridge=bridge interface=wlan2
add bridge=bridge_wg interface=Viaxe_WG1
add bridge=bridge_wg interface=Viaxe_WG2
/interface list member
add interface=ether1 list=WAN
add interface=bridge list=LAN
add interface=wlan1 list=WAN
add list=WAN
add interface=bridge_wg list=LAN
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=wg.com endpoint-port=\
    31221 interface=WG public-key=\
    "xxxx"
/ip address
add address=192.168.100.1/24 comment=Lan interface=bridge network=\
    192.168.100.0
add address=192.168.50.2/30 comment=WG interface=WG network=\
    192.168.50.0
add address=192.168.101.1/24 comment=Lan_WG interface=bridge_wg network=\
    192.168.101.0
/ip dhcp-client
add interface=ether1
add interface=wlan1
/ip dhcp-server network
add address=192.168.100.0/24 dns-server=208.67.222.222,208.67.220.220 \
    gateway=192.168.100.1 netmask=24
add address=192.168.101.0/24 dns-server=208.67.220.220,208.67.220.220 \
    gateway=192.168.101.1 netmask=24
/ip firewall filter
add action=accept chain=input comment="accept established,related,untracked" \
    connection-state=established,related,untracked
add action=drop chain=input comment="drop invalid" connection-state=invalid
add action=add-src-to-address-list address-list="port scanners" \
    address-list-timeout=4w2d chain=input comment="Port scanners list" \
    protocol=tcp psd=21,3s,3,1
add action=drop chain=input comment="drop port scanners" src-address-list=\
    "port scanners"
add action=accept chain=input comment="accept icmp" limit=10,5:packet \
    protocol=icmp
add action=drop chain=input comment="drop all not coming from LAN" \
    in-interface-list=!LAN
add action=fasttrack-connection chain=forward comment=fasttrack \
    connection-state=established,related hw-offload=yes
add action=accept chain=forward comment=\
    "accept established,related,untracked" connection-state=\
    established,related,untracked
add action=drop chain=forward comment="drop invalid" connection-state=invalid
add action=drop chain=forward comment="drop all from WAN not DSTNATed" \
    connection-nat-state=!dstnat connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment=WAN ipsec-policy=out,none \
    out-interface-list=WAN src-address=192.168.100.0/24
add action=masquerade chain=srcnat comment=WG out-interface=WG \
    src-address=192.168.101.0/24
/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.50.1 \
    pref-src=0.0.0.0 routing-table=WG scope=30 suppress-hw-offload=no \
    target-scope=10
/routing rule
add action=lookup comment=WG disabled=no src-address=192.168.101.0/24 \
    table=WG


EDITO:
Para más datos, desde la 192.168.101.X, puedo acceder a gestionar el router por la 192.168.100.1 pero no por la 192.168.101.1.
El comportamiento es como si aislaras las IPs de la subred 192.168.101.0/24, las rutas funcionan pero no se ven entre los clientes.

La solución es que son necesarias dos reglas, la de destino para que sepa encontrar las IP locales en "main", y la de origen para que las mande a la "WG" y la regla de enrutamiento las mande por el gateway que toca.

Código:
/routing rule
add action=lookup-only-in-table disabled=no dst-address=192.168.101.0/24 table=\
    main
add action=lookup comment=WG disabled=no src-address=192.168.101.0/24 table=WG

 
Última edición:
La solución es que son necesarias dos reglas, la de destino para que sepa encontrar las IP locales en "main", y la de origen para que las mande a la "WG" y la regla de enrutamiento las mande por el gateway que toca.

Código:
/routing rule
add action=lookup-only-in-table disabled=no dst-address=192.168.101.0/24 table=\
    main
add action=lookup comment=WG disabled=no src-address=192.168.101.0/24 table=WG

Sería lo mismo que tener una única regla con un lookup y en la tabla de rutas dos rutas: la específica, y la por defecto. Si no lo encuentra en la específica, saldrá por la otra.

Saludos!
 
Sería lo mismo que tener una única regla con un lookup y en la tabla de rutas dos rutas: la específica, y la por defecto. Si no lo encuentra en la específica, saldrá por la otra.

Saludos!

¿Puedes poner un ejemplo?, no entiendo esto.
Gracias.
 
Tengo funcionando dos site to site wireguard y varios dispositivos con roadwarrior. Me interesa cambiar el router mikrotik pero cuando exporto la configuración en el apartado interfaz wireguard no se copia ni la public ni private key. Hay alguna manera de que cuando empiece a configurar el nuevo router le asigne a la nueva interfaz wireguard la misma public key para así no tenérsela que cambiar a todos los clientes wireguard?
 
Tengo funcionando dos site to site wireguard y varios dispositivos con roadwarrior. Me interesa cambiar el router mikrotik pero cuando exporto la configuración en el apartado interfaz wireguard no se copia ni la public ni private key. Hay alguna manera de que cuando empiece a configurar el nuevo router le asigne a la nueva interfaz wireguard la misma public key para así no tenérsela que cambiar a todos los clientes wireguard?

Utiliza:
Código:
/export file=backup show-sensitive

S@lu2.
 
Eso era muchas gracias.
Y, cuando vayas a crear la config nueva, usa la clave privada a la hora de dar de alta las interfaces wireguard, y así tendrás el mismo set de pares de claves
Código:
/interface wireguard
add name=wireguard1 listen-port=12345 private-key=chorizo

Recuerda, una misma clave privada siempre genera la misma clave pública asociada. Si lo haces bien, tus pares de claves no cambiarán.

Saludos!
 
Buenas! Una aclaración. Cuando en la primera página dices "si lo hemos hecho bien, tendremos ambas sedes unidas por un túnel WireGuard, enrutando las redes LAN de ambos extremos, mientras el resto del tráfico local y la salida a internet se queda en cada sitio", quieres decir que cada uno de los sitios sale a internet por su cuenta, ¿verdad? Y unicamente cuando tiene que acudir a una IP del otro sitio es cuando el tráfico va por la vpn.

Saludos!
 
Buenas! Una aclaración. Cuando en la primera página dices "si lo hemos hecho bien, tendremos ambas sedes unidas por un túnel WireGuard, enrutando las redes LAN de ambos extremos, mientras el resto del tráfico local y la salida a internet se queda en cada sitio", quieres decir que cada uno de los sitios sale a internet por su cuenta, ¿verdad? Y unicamente cuando tiene que acudir a una IP del otro sitio es cuando el tráfico va por la vpn.

Saludos!
Exacto.

Saludos!
 
Perfecto, muy útil entonces. ¿Se puede hacer que A vea a B, pero B no pueda conectarse a A?

Estoy pensando en que en B haya un recurso compartido (p.ej., un NAS), y quiero que los dispositivos conectados a la red de A puedan acceder a ese dispositivo. Sin embargo, no necesito que el resto de dispositivos de B vean y accedan a la red de A.

Un saludo
 
Simplemente controla tú en el allowed-address a quien le das paso. En lugar de permitir la subred entera del otro lado, permites únicamente la IP del túnel y la del host en cuestión.

Saludos!
 
hola, quisiera preguntar algo...

tengo una conexion site to site con wireguard en la cual tengo 2 equipos mk con bridges con diferentes subredes. todos los equipos conectados a dichos mk por lan son capaces de ver sin problema a las demás subredes (independientemente del lado en el que estén gracias a esta vpn). El problema lo tengo cuando pretendo realizar conexiones road warrior. Cuando estos se conectan a través de una nueva interfaz wireguard con diferentes ip, son capaces de ver los equipos del lado del servidor wireguard pero no los del lado cliente site to site. me encuentro en la necesidad de poder simular que ciertas personas puedan hacer como que están en ambas sedes trabajando como lo harían en local y solo consigo que vean una de las dos oficinas. que puede estar pasando ?

ambos MK están bajo NAT y entre sedes no hay problema. si agrego clientes road warrior, puedo ver la subred del servidor pero no la que tiene este conectada a su vez como cliente wireguard.

Al hacer tracert con el cliente wireguard roadwarrior se me queda en la 1.0.0.1 y de ahí no pasa.

expongo miCFG:

Código:
# software id = LHSI-L3SG

/interface ethernet
set [ find default-name=ether2 ] name=LAN2
set [ find default-name=ether1 ] comment=INTERNET name=WAN


/interface wireguard
add listen-port=PUERTO mtu=1420 name=cliente-personal
add listen-port=PUERTO mtu=1420 name=wireguard1

/interface wireguard peers
add allowed-address="192.168.0.0/24,192.168.1.0/24,192.168.2.0/24,15.3.95.0/24\
    ,15.3.96.0/24,123.0.0.0/29" endpoint-address=\
    IP-CLIENTE-SITE-TO-SITE interface=wireguard1 public-key=\
    "CLAVE-PUBLICA-CLIENTE"
add allowed-address=\
    15.3.95.0/24,15.3.96.0/24,1.0.0.0/29,123.0.0.0/29,192.168.1.0/24 \
    interface=cliente-personal public-key=\
    "CLAVE-PUBLICA-ROAD-WARRIOR"


/ip address
add address=123.0.0.1/29 interface=wireguard1 network=123.0.0.0
add address=15.3.95.1/24 interface=LAN2 network=15.3.95.0
add address=192.168.1.113/24 interface=WAN network=192.168.1.0
add address=1.0.0.1/29 interface=cliente-personal network=1.0.0.0



/ip firewall nat
add action=masquerade chain=srcnat out-interface=WAN


/ip route
add disabled=no dst-address=0.0.0.0/0 gateway=192.168.1.1
add disabled=no distance=1 dst-address=15.3.96.0/24 gateway=123.0.0.2 \
    pref-src=0.0.0.0 routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10



Gracias de antemano!
Saludos!


Sin título.png
Sin título.png
 
Te falta una ruta de retorno en el router de la derecha, el cliente sts. Diciendo que a la subred de los roadwarriors, se llega por la 123.0.0.1

Un consejo: usa direcciones privadas para las LAN y las VPN. Las que tienes ahora mismo son públicas. Preferentemente de tipo B y C.

Saludos!
 
Te falta una ruta de retorno en el router de la derecha, el cliente sts. Diciendo que a la subred de los roadwarriors, se llega por la 123.0.0.1

Un consejo: usa direcciones privadas para las LAN y las VPN. Las que tienes ahora mismo son públicas. Preferentemente de tipo B y C.

Saludos!
Es correcto. Pensé que al ser el servidor el encargado de enrutar, los clientes road podrían acceder sin tener que especificar las rutas en el sts. He agregado las rutas y las permisiones en las redes permitidas de wireguard y andando. Supongo que podría hacer lo mismo con un cliente toad warrior l2tp sobre este mismo escenario, no? Voy a indagar.

Resuelto este punto! Muchas gracias Pokoyo!
 
Es correcto. Pensé que al ser el servidor el encargado de enrutar, los clientes road podrían acceder sin tener que especificar las rutas en el sts. He agregado las rutas y las permisiones en las redes permitidas de wireguard y andando. Supongo que podría hacer lo mismo con un cliente toad warrior l2tp sobre este mismo escenario, no? Voy a indagar.

Resuelto este punto! Muchas gracias Pokoyo!
No tiene que ver con el servidor. El servidor sabe perfectamente cómo llegar al otro extremo, es el otro extremo el que no tiene ni idea de quien es esa subred ni de por donde se retorna a ella. Te va a pasar lo mismo con cualquier VPN. Lo mismo que cuando creas un STS creas rutas sobre cómo encontrar la LAN del otro extremo, esto es lo mismo, si consideras que el segmento del cliente road warrior no deja de ser otra “LAN” que tienes que enrutar.

Si no quieres andar lidiando con rutas estáticas, echa a correr OSPF, y que se encargue él de crear todas las rutas de manera dinámica. Tienes un manual al respecto, en este mismo sub.

Saludos!
 
Buenas!

Me estoy volviendo loco. Llevo todo el día tratando de hacer un túnel sts y no consigo hacer ping al otro lado del túnel. Ahora mismo tengo conectado el router del lado B en un switch en casa para poder hacer la prueba. El Router A es mi router principal.

Lado A:


Código:
# jun/04/2022 18:39:34 by RouterOS 7.2.3
# software id = FCGY-6BV8
#
# model = RBD52G-5HacD2HnD
# serial number = XXX

/interface bridge

add admin-mac=XXX auto-mac=no comment=defconf name=bridge

add igmp-snooping=yes name=bridge-iptv

/interface ethernet

set [ find default-name=ether2 ] comment=Salon

set [ find default-name=ether3 ] comment="Unifi AP"

set [ find default-name=ether4 ] comment=Despacho

/interface wireless

set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-XX \

    distance=indoors frequency=auto installation=indoor mode=ap-bridge ssid=\

    MikroTik-61524F wireless-protocol=802.11

set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=\

    20/40/80mhz-XXXX distance=indoors frequency=auto installation=indoor \

    mode=ap-bridge ssid=MikroTik-615250 wireless-protocol=802.11

/interface eoip

add local-address=172.17.10.1 mac-address=FE:E4:82:8A:C2:90 mtu=1500 name=\

    eoip-iptv remote-address=172.17.10.2 tunnel-id=0

/interface wireguard

add listen-port=54322 mtu=1420 name=wg-sts-iptv

add listen-port=49852 mtu=1420 name=wg-sts-o

add listen-port=49851 mtu=1420 name=wireguard-rw

/interface vlan

add interface=ether1 name=vlan6-internet vlan-id=6

/interface pppoe-client

add add-default-route=yes disabled=no interface=vlan6-internet name=internet \

    use-peer-dns=yes user=adslppp@telefonicanetpa

/interface list

add comment=defconf name=WAN

add comment=defconf name=LAN

/interface wireless security-profiles

set [ find default=yes ] supplicant-identity=MikroTik

/ip pool

add name=default-dhcp ranges=192.168.88.10-192.168.88.254

add name=vpn-pool ranges=192.168.51.2-192.168.51.254

/ip dhcp-server

add address-pool=default-dhcp interface=bridge name=defconf

/ppp profile

add change-tcp-mss=yes interface-list=LAN local-address=192.168.51.1 name=\

    vpn-profile remote-address=vpn-pool use-encryption=yes

/interface bridge port

add bridge=bridge comment=defconf interface=ether2

add bridge=bridge comment=defconf interface=ether3

add bridge=bridge comment=defconf interface=ether4

add bridge=bridge comment=defconf interface=ether5

add bridge=bridge comment=defconf interface=wlan1

add bridge=bridge comment=defconf interface=wlan2

add bridge=bridge-iptv interface=eoip-iptv

/ip neighbor discovery-settings

set discover-interface-list=LAN

/interface l2tp-server server

set authentication=mschap2 default-profile=vpn-profile enabled=yes use-ipsec=\

    yes

/interface list member

add comment=defconf interface=bridge list=LAN

add comment=defconf interface=internet list=WAN

add interface=ether1 list=WAN

/interface wireguard peers

add allowed-address=192.168.50.2/32 comment="PeerRW - Iphone" interface=\

    wireguard-rw public-key="geEnSQZK6c0s0DBggA8Sn1XCoQPwVTLvTbeiapTRVyQ="

add allowed-address=192.168.50.3/32 comment="PeerRW - iPad" interface=\

    wireguard-rw public-key="ircJ7fOTVYrdoSSvBrgLa66ACbkGlTWL3B/DUFC+gVA="

add allowed-address=192.168.50.4/32 comment="PeerRW - XPS" interface=\

    wireguard-rw public-key="OGCf7chgKPx0GefVMtMULQfhyLtRGf02AJEOw41vVEA="

add allowed-address=192.168.50.5/32 comment="PeerRW - Iphone" \

    interface=wireguard-rw public-key=\

    "PuJ0YMwhYMnpNkwK9ZrUMJ0TR2GdYqxtWmcvT+xk5yk="

add allowed-address=172.16.0.2/32,192.168.77.0/24 endpoint-address=\

    MyDDNS endpoint-port=49852 interface=wg-sts-o \

    public-key="QA7Q0S0SvzE9lr78N7ilhaEJ+T5e2m+huYiWdtUKVWo="

add allowed-address=172.17.10.2/32 comment=iptv interface=\

    wg-sts-iptv public-key="xnRWfqWe/1h9AwYABM5yaLOtYx8CcHxDAqhvDo2iyUA="

/ip address

add address=192.168.88.1/24 comment=defconf interface=bridge network=\

    192.168.88.0

add address=192.168.50.1/24 interface=wireguard-rw network=192.168.50.0

add address=192.168.100.2/24 interface=ether1 network=192.168.100.0

add address=172.17.10.1/30 interface=wg-sts-iptv network=172.17.10.0

add address=172.16.0.1/30 interface=wg-sts-o network=172.16.0.0

/ip cloud

set ddns-enabled=yes ddns-update-interval=5m

/ip dhcp-client

add comment=defconf interface=ether1

/ip dhcp-server lease

add address=192.168.88.200 client-id=1:0:e0:4c:78:fc:e7 comment=\

    "Raspberry Pi 0W2 eth0" mac-address=00:E0:4C:78:FC:E7 server=defconf

add address=192.168.88.201 client-id=1:e4:5f:1:75:96:89 comment=\

    "Raspberry Pi 0W2 wlan" mac-address=E4:5F:01:75:96:89 server=defconf

add address=192.168.88.202 client-id=1:ac:d5:64:83:96:2f comment=\

    "Brother Impresora" mac-address=AC:D5:64:83:96:2F server=defconf

add address=192.168.88.253 client-id=1:94:de:80:77:10:ab comment=unRAID \

    mac-address=94:DE:80:77:10:AB server=defconf

add address=192.168.88.210 client-id=1:d0:21:f9:67:62:a1 comment=\

    "Netgear GS308E Salon" mac-address=D0:21:F9:67:62:A1 server=defconf

/ip dhcp-server network

add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=\

    192.168.88.1

/ip dns

set allow-remote-requests=yes use-doh-server=https://1.1.1.1/dns-query \

    verify-doh-cert=yes

/ip dns static

add address=192.168.88.1 comment=defconf name=router.lan

/ip firewall address-list

add address=XXX list=public-ip

/ip firewall filter

add action=accept chain=input comment=\

    "defconf: accept established,related,untracked" connection-state=\

    established,related,untracked

add action=accept chain=input comment="allow IPsec" dst-port=4500,500 \

    protocol=udp

add action=accept chain=input comment="allow l2tp" dst-port=1701 protocol=udp

add action=drop chain=input comment="defconf: drop invalid" connection-state=\

    invalid

add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp

add action=accept chain=input comment=\

    "defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1

add action=accept chain=input comment="vpn: allow wireguard-rw" dst-port=\

    49851 protocol=udp

add action=accept chain=input src-address=192.168.50.0/24

add action=accept chain=input comment="vpn: allow wireguard-sts" dst-port=\

    49852 protocol=udp

add action=accept chain=input comment="vpn: allow wireguard sts-iptv" \

    dst-port=54322 protocol=udp

add action=accept chain=input comment="iptv: allow gre for eoip" \

    in-interface=wg-sts-iptv protocol=gre

add action=drop chain=input comment="defconf: drop all not coming from LAN" \

    in-interface-list=!LAN

add action=accept chain=forward comment="defconf: accept in ipsec policy" \

    ipsec-policy=in,ipsec

add action=accept chain=forward comment="defconf: accept out ipsec policy" \

    ipsec-policy=out,ipsec

add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \

    connection-state=established,related hw-offload=yes

add action=accept chain=forward comment=\

    "defconf: accept established,related, untracked" connection-state=\

    established,related,untracked

add action=drop chain=forward comment="defconf: drop invalid" \

    connection-state=invalid

add action=drop chain=forward comment=\

    "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \

    connection-state=new in-interface-list=WAN

/ip firewall nat

add action=masquerade chain=srcnat comment=hairpin-nat dst-address=\

    192.168.88.0/24 src-address=192.168.88.0/24

add action=masquerade chain=srcnat comment="defconf: masquerade" \

    ipsec-policy=out,none out-interface-list=WAN

add action=masquerade chain=srcnat comment="masq. vpn traffic" src-address=\

    192.168.51.0/24

/ip route

add disabled=no dst-address=192.168.77.0/24 gateway=172.16.0.2 routing-table=\

    main suppress-hw-offload=no

/ip service

set telnet disabled=yes

set ftp disabled=yes

set ssh disabled=yes

set api disabled=yes

set api-ssl disabled=yes

/ipv6 firewall address-list

add address=::/128 comment="defconf: unspecified address" list=bad_ipv6

add address=::1/128 comment="defconf: lo" list=bad_ipv6

add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6

add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6

add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6

add address=100::/64 comment="defconf: discard only " list=bad_ipv6

add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6

add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6

add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6

/ipv6 firewall filter

add action=accept chain=input comment=\

    "defconf: accept established,related,untracked" connection-state=\

    established,related,untracked

add action=drop chain=input comment="defconf: drop invalid" connection-state=\

    invalid

add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\

    icmpv6

add action=accept chain=input comment="defconf: accept UDP traceroute" port=\

    33434-33534 protocol=udp

add action=accept chain=input comment=\

    "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\

    udp src-address=fe80::/10

add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \

    protocol=udp

add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\

    ipsec-ah

add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\

    ipsec-esp

add action=accept chain=input comment=\

    "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec

add action=drop chain=input comment=\

    "defconf: drop everything else not coming from LAN" in-interface-list=\

    !LAN

add action=accept chain=forward comment=\

    "defconf: accept established,related,untracked" connection-state=\

    established,related,untracked

add action=drop chain=forward comment="defconf: drop invalid" \

    connection-state=invalid

add action=drop chain=forward comment=\

    "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6

add action=drop chain=forward comment=\

    "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6

add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \

    hop-limit=equal:1 protocol=icmpv6

add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\

    icmpv6

add action=accept chain=forward comment="defconf: accept HIP" protocol=139

add action=accept chain=forward comment="defconf: accept IKE" dst-port=\

    500,4500 protocol=udp

add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\

    ipsec-ah

add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\

    ipsec-esp

add action=accept chain=forward comment=\

    "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec

add action=drop chain=forward comment=\

    "defconf: drop everything else not coming from LAN" in-interface-list=\

    !LAN

/ppp secret

add name=vpn service=l2tp

/system clock

set time-zone-name=Europe/Madrid

/tool mac-server

set allowed-interface-list=LAN

/tool mac-server mac-winbox

set allowed-interface-list=LAN

Lado B:

Código:
# may/16/2022 02:09:08 by RouterOS 7.2.3
# software id = 7ZTN-XFC6
#
# model = RB750Gr3
# serial number = XXX

/interface bridge

add admin-mac=XXX auto-mac=no comment=defconf name=bridge

add igmp-snooping=yes name=bridge-iptv

/interface eoip

add local-address=172.17.0.1 mac-address=FE:49:F3:94:84:CE mtu=1500 name=\

    eoip-iptv remote-address=172.17.0.2 tunnel-id=0

/interface wireguard

add listen-port=49852 mtu=1420 name=wg-sts-f

add listen-port=54321 mtu=1420 name=wg-sts-iptv

add listen-port=49851 mtu=1420 name=wireguard-rw

/interface vlan

add interface=ether1 name=vlan3-telefono vlan-id=3

add interface=ether1 name=vlan6-internet vlan-id=6

/interface pppoe-client

add add-default-route=yes disabled=no interface=vlan6-internet name=internet \

    use-peer-dns=yes user=adslppp@telefonicanetpa

/interface list

add comment=defconf name=WAN

add comment=defconf name=LAN

/interface wireless security-profiles

set [ find default=yes ] supplicant-identity=MikroTik

/ip pool

add name=default-dhcp ranges=192.168.77.10-192.168.77.199

/ip dhcp-server

add address-pool=default-dhcp interface=bridge name=defconf

/port

set 0 name=serial0

/routing rip instance

add afi=ipv4 disabled=no name=rip

/interface bridge port

add bridge=bridge-iptv comment=defconf interface=ether2

add bridge=bridge comment=defconf interface=ether3

add bridge=bridge comment=defconf interface=ether4

add bridge=bridge comment=defconf interface=ether5

add bridge=bridge-iptv interface=eoip-iptv

/ip neighbor discovery-settings

set discover-interface-list=LAN

/interface list member

add comment=defconf interface=bridge list=LAN

add comment=defconf interface=internet list=WAN

/interface wireguard peers

add allowed-address=192.168.50.2/32 comment="PeerRW - XPS15" interface=\

    wireguard-rw public-key="RUtKdEGoH9oSI8wwFaY/vAVBpxcKLP1To1t3n0rg3XA="

add allowed-address=192.168.50.3/32 comment="PeerRW - iPhone" interface=\

    wireguard-rw public-key="wjHCAs0mQQTBrd/XoWiNvGGdkgvR0vibLoZaYaHKLGM="

add allowed-address=172.17.0.2/32 comment=b-iptv interface=wg-sts-iptv \

    public-key="8RxSVG5CINOKRZNhpjxsA0ssdKbVJ1nCSzrqBMVWbmg="

add allowed-address=172.16.0.1/32,192.168.88.0/24 endpoint-address=\

    MyDDNS endpoint-port=49852 interface=wg-sts-f \

    public-key="cllaPYQPCaGs9usZEBOc8L15/OTRQISvP1mRRDEZ/hw="

/ip address

add address=192.168.77.1/24 comment=defconf interface=bridge network=\

    192.168.77.0

add address=192.168.50.1/24 interface=wireguard-rw network=192.168.50.0

add address=172.17.0.1/30 interface=wg-sts-iptv network=172.17.0.0

add address=172.16.0.2/30 interface=wg-sts-f network=172.16.0.0

/ip cloud

set ddns-enabled=yes ddns-update-interval=5m

/ip dhcp-client

add comment=defconf interface=ether1

add add-default-route=no interface=vlan3-telefono use-peer-dns=no \

    use-peer-ntp=no

/ip dhcp-server network

add address=192.168.77.0/24 comment=defconf dns-server=192.168.77.1 gateway=\

    192.168.77.1

/ip dns

set allow-remote-requests=yes use-doh-server=https://1.1.1.1/dns-query \

    verify-doh-cert=yes

/ip dns static

add address=192.168.88.1 comment=defconf name=router.lan

/ip firewall filter

add action=accept chain=input comment=\

    "defconf: accept established,related,untracked" connection-state=\

    established,related,untracked

add action=drop chain=input comment="defconf: drop invalid" connection-state=\

    invalid

add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp

add action=accept chain=input comment=\

    "defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1

add action=accept chain=input comment="voip: accept rip multicast traffic" \

    dst-address=224.0.0.9 dst-port=520 in-interface=vlan3-telefono protocol=\

    udp

add action=accept chain=input comment="vpn: allow wireguard-rw" dst-port=\

    49851 protocol=udp

add action=accept chain=input src-address=192.168.50.0/24

add action=accept chain=input comment="vpn: allow wireguard sts-iptv" \

    dst-port=54321 protocol=udp

add action=accept chain=input comment="iptv: allow gre for eoip" \

    in-interface=wg-sts-iptv protocol=gre

add action=accept chain=input comment="vpn: allow wireguard-sts" dst-port=\

    49852 protocol=udp

add action=drop chain=input comment="defconf: drop all not coming from LAN" \

    in-interface-list=!LAN

add action=accept chain=forward comment="defconf: accept in ipsec policy" \

    ipsec-policy=in,ipsec

add action=accept chain=forward comment="defconf: accept out ipsec policy" \

    ipsec-policy=out,ipsec

add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \

    connection-state=established,related hw-offload=yes

add action=accept chain=forward comment=\

    "defconf: accept established,related, untracked" connection-state=\

    established,related,untracked

add action=drop chain=forward comment="defconf: drop invalid" \

    connection-state=invalid

add action=drop chain=forward comment=\

    "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \

    connection-state=new in-interface-list=WAN

/ip firewall mangle

add action=set-priority chain=postrouting new-priority=4 out-interface=\

    vlan3-telefono

# internet not ready

add action=set-priority chain=postrouting new-priority=1 out-interface=\

    internet

/ip firewall nat

add action=masquerade chain=srcnat comment="defconf: masquerade" \

    ipsec-policy=out,none out-interface-list=WAN

add action=masquerade chain=srcnat comment="voip: masq voip" out-interface=\

    vlan3-telefono

/ip route

add disabled=no dst-address=192.168.88.0/24 gateway=172.16.0.1 routing-table=\

    main suppress-hw-offload=no

/ip service

set telnet disabled=yes

set ftp disabled=yes

set ssh disabled=yes

set api disabled=yes

set api-ssl disabled=yes

/ipv6 firewall address-list

add address=::/128 comment="defconf: unspecified address" list=bad_ipv6

add address=::1/128 comment="defconf: lo" list=bad_ipv6

add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6

add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6

add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6

add address=100::/64 comment="defconf: discard only " list=bad_ipv6

add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6

add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6

add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6

/ipv6 firewall filter

add action=accept chain=input comment=\

    "defconf: accept established,related,untracked" connection-state=\

    established,related,untracked

add action=drop chain=input comment="defconf: drop invalid" connection-state=\

    invalid

add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\

    icmpv6

add action=accept chain=input comment="defconf: accept UDP traceroute" port=\

    33434-33534 protocol=udp

add action=accept chain=input comment=\

    "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\

    udp src-address=fe80::/10

add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \

    protocol=udp

add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\

    ipsec-ah

add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\

    ipsec-esp

add action=accept chain=input comment=\

    "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec

add action=drop chain=input comment=\

    "defconf: drop everything else not coming from LAN" in-interface-list=\

    !LAN

add action=accept chain=forward comment=\

    "defconf: accept established,related,untracked" connection-state=\

    established,related,untracked

add action=drop chain=forward comment="defconf: drop invalid" \

    connection-state=invalid

add action=drop chain=forward comment=\

    "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6

add action=drop chain=forward comment=\

    "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6

add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \

    hop-limit=equal:1 protocol=icmpv6

add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\

    icmpv6

add action=accept chain=forward comment="defconf: accept HIP" protocol=139

add action=accept chain=forward comment="defconf: accept IKE" dst-port=\

    500,4500 protocol=udp

add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\

    ipsec-ah

add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\

    ipsec-esp

add action=accept chain=forward comment=\

    "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec

add action=drop chain=forward comment=\

    "defconf: drop everything else not coming from LAN" in-interface-list=\

    !LAN

/routing rip interface-template

add instance=rip interfaces=vlan3-telefono mode=passive

/system clock

set time-zone-name=Europe/Madrid

/tool mac-server

set allowed-interface-list=LAN

/tool mac-server mac-winbox

set allowed-interface-list=LAN


Saludos!
 
Última edición:
A simple vista no se ve nada raro. ¿Llegaste a probarlo "en producción" con ambos equipos manejando su propia IP pública?

Saludos!
 
Aún no porque el site b está a 30 km. A ver si el próximo fin de semana.

Como quiero conectar 4 localizaciones (incluyendo un nodo con un EoIP para M+), entiendo que si después de probar me funciona, sería más cómodo hacerlo con OSPF, ¿no? En ese caso, al leer el manual no me queda muy claro el punto de partida. Solo tendría que deshacer algo la parte de las /route de este manual antes de empezar con el otro ¿correcto?

Gracias!
 
Aún no porque el site b está a 30 km. A ver si el próximo fin de semana.

Como quiero conectar 4 localizaciones (incluyendo un nodo con un EoIP para M+), entiendo que si después de probar me funciona, sería más cómodo hacerlo con OSPF, ¿no? En ese caso, al leer el manual no me queda muy claro el punto de partida. Solo tendría que deshacer algo la parte de las /route de este manual antes de empezar con el otro ¿correcto?

Gracias!
Correcto, usaría OSPF sin dudarlo. Simplemente crea las rutas estáticas con peso 111, tal que entren en juego las equivalentes rutas de OSPF con distancia por defecto 110 cuando se creen, dejando las otras como backup. Así luego las puedes borrar. Cuando tengas el protocolo funcionando.

Saludos!
 
Buenos días, a ver si se os ocurre algo porque estoy totalmente desconcertado.
2 routers conectados via wireguard STS.
El router 1, principal, tiene clientes varios que salen a internet por el, los roadwarriors no tienen problema alguno.
El router 2, que es un cliente STS, envía su tráfico de internet via wireguard, y esto parece funcionar bien, si tu haces tracerts tienen buena pinta, pero los disposivos conectados a el, cuando intentan conectarse a ciertas webs o no se cargan y dan timeout (curiosamente haces un tracert y sale aparentemente bien) o puede pasar que no se carguen ciertas partes de la web.
Asumo que pueda ser problema de la regla de masquerade, pero es que es sencilla:
Código:
 1    ;;; WG gateway
      chain=srcnat action=masquerade src-address=192.168.101.0/24
      out-interface=WG log=no log-prefix=""

Y es que no el encuentro lógica, adslzone.net funciona perfecto, el www.elcorteingles.es igual, pero carrefour.es no carga, y es.aliexpress.com no carga las imágenes, por ejemplo.

La regla masquerade del router 1 es mas simple, enmascara todo lo que sale por WAN.

¿que puede estar pasando?

Diría que el problema es el router 2, porque todo el que se conecta como roadwarrior no tiene problema de cargar esas mismas webs.
 
Arriba