Como fazer conexões responder do mesmo gateway que eles entraram no RouterOS?

3

Eu tenho um dispositivo MikroTik RouterOS 6.23 e minha rede é a seguinte:

Router
  |
  |-- bridge1_LAN (wlan1 + ether1) (192.168.0.210) -- LAN (192.168.0.0/24)
  |   Here is where computers are. Those include some servers and some users.
  |   Users should be able to navigate always, and servers should
  |   be reachable online always.
  |
  |-- ether2_ADSL (192.168.2.2) -- ADSL router (192.168.2.1) -- WAN
  |   Users should navigate through here because there is no traffic limit.
  |   Incoming traffic should work exactly as with ether3_3G, as a temporary
  |   backup solution in case it fails.
  |
  |-- ether3_3G (192.168.3.2) -- 3G router (192.168.3.1) -- WAN
      This connection has a traffic limit, but faster upload rate, so it's
      mainly for incoming traffic. In case ether2_ADSL fails, this should be
      used as a temporary backup connection for outgoing traffic.

Agora, a configuração relevante:

/ip firewall mangle

# This rule is disabled because, when enabled, users cannot browse Internet
add action=mark-routing chain=prerouting connection-mark=no-mark disabled=yes \
    in-interface=ether2_ADSL new-routing-mark=to_ether2_ADSL passthrough=no

# This marks all traffic coming from ether3_3G to get out through there too
add action=mark-routing chain=prerouting in-interface=ether3_3G \
    new-routing-mark=to_ether3_3G passthrough=no

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

# This is just an example web server listening in port 8069, for testing purposes
add action=dst-nat chain=dstnat comment="Test server" dst-port=8069 \
    in-interface=ether2_ADSL protocol=tcp to-addresses=192.168.0.156 \
    to-ports=8069
add action=dst-nat chain=dstnat comment="Test server" dst-port=8069 \
    in-interface=ether3_3G protocol=tcp to-addresses=192.168.0.156 \
    to-ports=8069

/ip route

# Outgoing traffic by routing-mark
add check-gateway=ping distance=10 gateway=192.168.3.1 routing-mark=\
    to_ether3_3G
add check-gateway=ping distance=10 gateway=192.168.2.1 routing-mark=\
    to_ether2_ADSL

# Outgoing traffic by default
add check-gateway=ping distance=20 gateway=192.168.2.1
add check-gateway=ping distance=30 gateway=192.168.3.1

Com esta configuração, todo o tráfego sai por ether3_3G apenas se ether2_ADSL falhar, e ether2_ADSL caso contrário (na maior parte das vezes).

Agora, o problema é que as conexões de entrada funcionam somente através de ether2_ADSL . Conexões recebidas de ether3_3G ficam sempre presas no estado syn received .

Parece-me que as conexões de entrada de ether3_3G alcançam o servidor de destino, mas a resposta é emitida por ether2_ADSL e é por isso que o handshake TCP nunca é concluído. De fato, se eu desligar fisicamente o cabo ether2_ADSL , todas as conexões de / para ether3_3G começam a funcionar OK.

Como posso consertar isso?

    
por Yajo 09.01.2015 / 12:36

1 resposta

3

Você precisará marcar as conexões vindas de ether3_3G para que você possa marcar as respostas para serem roteadas de volta via ether3_3G.

Aqui está uma configuração de exemplo (não testada)

/ip firewall mangle
add action=mark-connection chain=prerouting comment="Mark connection so packets from 3G get returned to 3G properly" disabled=no in-interface=ether3_3G new-connection-mark=3g-packets passthrough=no
add action=mark-routing chain=prerouting connection-mark=3g-packets disabled=no new-routing-mark=3g-packets passthrough=no
add action=mark-routing chain=output connection-mark=3g-packets disabled=no new-routing-mark=3g-packets passthrough=no


/ip route
add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.3.1 routing-mark=3g-packets

A primeira regra colocará um connection-mark em qualquer pacote que chegue da interface ether3_3G.

A segunda e a terceira regra "capturarão" as respostas de volta com base nessa marca de conexão e, em seguida, colocarão routing-mark nessas conexões.

A segunda regra é para pacotes que são essencialmente encaminhados e a terceira regra é para respostas que o próprio roteador enviará (por exemplo, pings)

Finalmente, a rota estática no final roteará os pacotes com a marca de roteamento apropriada através da interface ether3_3G.

    
por 09.01.2015 / 15:24