• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

How to avoid asymmetric routing between subnets / VLANS!?

Scheduled Pinned Locked Moved Firewalling
7 Posts 3 Posters 1.4k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L
    louis2
    last edited by louis2 Jun 17, 2019, 1:52 PM Jun 17, 2019, 1:07 PM

    Hello,

    I know, not the first time asymmetric routing is an issue, but I think it is more that worth to dig into that issue again.
    I have divided my network in a couple of using VLAN’s, where each VLAN has its own IP-range. Each VLAN is mapped on an pFsense interface.

    • In the WLAN-rule table is determined which internet incoming traffic is allowed;
    • In the LANx-rule-tables is determined which LAN outgoing traffic is allowed is allowed. That traffic can be destinated to:
      o The internet
      o Another VLAN / Interface.
    • In the floating rules I defined a couple of traffic types which should never leave the network.

    The problem described here is related to inter VLAN-traffic.
    If (TCP) traffic is generated in LAN-A destinated to LAN-B, the traffic is not correctly passed due to asymmetric routing. The Firewall logging is indicating TCP:S.
    At first that sounded very strange to me, up to the moment I did some traces (tracert). That showed me that the routing is as follows:

    • Traffic is floating towards the LAN-address / gateway first (lets say 192.168.1.1) then
    • It is directly routed to the destination IP (lets say 192.168.2.x)
      And as expected the route back behaves identical
    • Traffic is going to the gateway (192.168.2.1) and then
    • Directly to the source (192.168.1.x)

    And that is indeed asymmetric.

    The route IMHO should be

    • Traffic towards source gateway (192.168.1.1)
    • ** Than towards destination gateway (192.168.2.1) **
    • Than to the destination (192.168.2.x)

    Big question is why does this happen!! So I did some checks:

    • Could my network allow traffic directly bypassing the FW  NO!
    • Has the source computer any knowledge of the destination (I checked ARP)  NO
    • Is there anything strange in the pfSense ARP table  NO
    • Is there something strange in the pfSense route table ……….  perhaps
      There are routes towards 192.168.1.0/24 and 192.168.2.0/24 that would be correct as long as those routes are only and I mean only accessible via the corresponding interface gateway!

    As final test I disabled the interface of the second lan (192.168.2.0/24) and did start tracer again.

    • Traffic is routed towards the internet now, since the 192.168.2.0/24 range is not owned by the FW any longer. Where I blocked it with a floating rule. Since the route is now changed, it is even more likely that the firewall (pfSense package) caused the problem.

    So IMHO it seems that the problem the firewall has (asymmetric routing), is caused by .... the firewall it self !! ☹ ☹ . If so IMHO a serious issue!

    From the security point of view, I do not see an acceptable workaround!
    I assume that this problem also occurs when using IPV6 (I did not test).

    Hope someone has the solution.

    Sincerely,

    Louis

    1 Reply Last reply Reply Quote 0
    • C
      Chousuke
      last edited by Jun 21, 2019, 8:45 AM

      I'm not completely certain if I understand you correctly, but it seems that you have some confusion about what is and isn't asymmetric routing.

      In your scenario you have two subnets 192.168.1.0/24 and 192.168.2.0/24 on separate network interfaces (A and B respectively), with a single device acting as the gateway for both and and as a firewall/router between both segments, correct?

      For the purposes of routing and firewalling, VLANs are really no different from physical interfaces, so that distinction can be ignored.

      Let's shorten those networks to 1.x and 2.x to save some typing.

      Let's assume a client 1.10 wants to communicate with 2.10 and sends a packet there. It first sends it to 1.1 because it is its default gateway.

      When the packet arrives at 1.1, the router consults its route table to see where the packet needs to go and sees that it has a direct link with 2.10, so it simply outputs the packet on interface B.

      Notably, it does not need to send the packet to 2.1 because it is 2.1. Sending a packet to itself would be completely pointless.

      The packet goes 1.10 -> router @ interface A -> interface B -> 2.10

      When 2.10 sends a return packet, it of course sends it to 2.1, which is the same router. That router then sends it out of interface A to its destinations

      so the packet goes 2.10 -> router @ interface B -> interface A -> 1.10

      Because the return traffic traverses the same devices and interfaces in reverse, the routing is not asymmetric.

      Now, I'm not sure what the actual problem with your firewall ruleset is if it's not working the way you expect, but I think you can rule out asymmetric routing as a possible cause.

      1 Reply Last reply Reply Quote 0
      • D
        Derelict LAYER 8 Netgate
        last edited by Derelict Jun 22, 2019, 5:14 PM Jun 22, 2019, 5:12 PM

        Yeah, I don't see asymmetry there.

        @louis2 said in How to avoid asymmetric routing between subnets / VLANS!?:

        The Firewall logging is indicating TCP:S

        That means the traffic is not being passed on the interface you are seeing those logged on. Check your rule set. In asymmetric situations you might see blocks for other flags like TCP:SA, TCP:FA because the firewall is seeing traffic for part of the TCP connection and it hasn't seen the TCP:S[YN] first because the TCP traffic is going through different interfaces, aka asymmetrically.

        Chattanooga, Tennessee, USA
        A comprehensive network diagram is worth 10,000 words and 15 conference calls.
        DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
        Do Not Chat For Help! NO_WAN_EGRESS(TM)

        1 Reply Last reply Reply Quote 0
        • L
          louis2
          last edited by Jun 28, 2019, 7:34 AM

          @Chousuke. Thanks for the replay. I have been away for a couple of days, so thats why I did not react earlier.

          @Chousuke said in How to avoid asymmetric routing between subnets / VLANS!?:

          I'm not completely certain if I understand you correctly, but it seems that you have some confusion about what is and isn't asymmetric routing.

          In your scenario you have two subnets 192.168.1.0/24 and 192.168.2.0/24 on separate network interfaces (A and B respectively), with a single device acting as the gateway for both and and as a firewall/router between both segments, correct?

          More exact
          On physical level I have three interfaces:

          • one for my management LAN and
          • the other two combined as lag carrying a couple of VLAN’s each VLAN having its own address range
            Each VLAN is represented as pfSense interface

          or the purposes of routing and firewalling, VLANs are really no different from physical interfaces, so that distinction can be ignored.

          I agree

          Let's shorten those networks to 1.x and 2.x to save some typing.
          Let's assume a client 1.10 wants to communicate with 2.10 and sends a packet there. It first sends it to 1.1 because it is its default gateway.

          Yep

          When the packet arrives at 1.1, the router consults its route table to see where the packet needs to go and sees that it has a direct link with 2.10, so it simply outputs the packet on interface B.

          Exactly this is what IMHO should not happen!!!
          compare it with a street, where my neightbours now where I live, and what my computer is. That should not give the right to pass my front door !!

          Notably, it does not need to send the packet to 2.1 because it is 2.1. Sending a packet to itself would be completely pointless.

          I do not agree for two reasons:
          a) It is causing an asymetric route
          b) entering my house (vlan) should go via the frontdoor (the vlan gateway), for security reasons. The vlan gateway should determine what/who is allowed to enter my house not the naber!

          The fact that both gateways are implemented on the same router does not change that! (IMHO)

          The packet goes 1.10 -> router @ interface A -> interface B -> 2.10
          When 2.10 sends a return packet, it of course sends it to 2.1, which is the same router. That router then sends it out of interface A to its destinations
          so the packet goes 2.10 -> router @ interface B -> interface A -> 1.10
          >> I am confused, because that is exactly as IMHO it should be !! (but what does not happen, it is skipping interface A)

          Because the return traffic traverses the same devices and interfaces in reverse, the routing is not asymmetric.
          Now, I'm not sure what the actual problem with your firewall ruleset is if it's not working the way you expect, but I think you can rule out asymmetric routing as a possible cause.

          C 1 Reply Last reply Jun 30, 2019, 4:37 PM Reply Quote 0
          • C
            Chousuke @louis2
            last edited by Jun 30, 2019, 4:37 PM

            I'll remove some of the non-relevant parts here

            When the packet arrives at 1.1, the router consults its route table to see where the packet needs to go and sees that it has a direct link with 2.10, so it simply outputs the packet on interface B.

            Exactly this is what IMHO should not happen!!!
            compare it with a street, where my neightbours now where I live, and what my computer is. That should not give the right to pass my front door !!

            What I was describing only applies to pure routing only. It's only concerned with getting a packet from point A to point B via whatever routes it has configured. A firewall is a separate logical function that can be applied on top of routing to filter traffic, but they can of course be performed by the same device.

            Notably, it does not need to send the packet to 2.1 because it is 2.1. Sending a packet to itself would be completely pointless.

            I do not agree for two reasons:
            a) It is causing an asymetric route
            b) entering my house (vlan) should go via the frontdoor (the vlan gateway), for security reasons. The vlan gateway should determine what/who is allowed to enter my house not the naber!

            The fact that both gateways are implemented on the same router does not change that! (IMHO)

            Your analogy doesn't really work. Instead, think of a network of isolated villages connected by passageways through a central hub. In such a case, you can only go from village A to village B by passing through the central hub, and two passageways.

            The villages are the networks (you can move freely within one) and can contain multiple houses (clients), the passageways are the interfaces on your router, and the hub is the router. If there's no security personnel at the hub, people can move freely between villages, but if you add a guard, you can perform security checks. Does that make sense?

            There's really only one gateway. It simply has two different addresses on two different networks, and as such it can route traffic between those networks.

            If you do not configure any firewall, the router will pass all traffic that it has routes for.

            The packet goes 1.10 -> router @ interface A -> interface B -> 2.10
            When 2.10 sends a return packet, it of course sends it to 2.1, which is the same router. That router then sends it out of interface A to its destinations
            so the packet goes 2.10 -> router @ interface B -> interface A -> 1.10
            >> I am confused, because that is exactly as IMHO it should be !! (but what does not happen, it is skipping interface A)

            You mean for the return traffic? It can't skip interface A on the return path, because that's its connection to the destination network. (the router will obviously have to emit the packet out of an interface to transmit it to its destination). It will however skip hopping through the gateway address of interface A, because it is already at the device where that address resides.

            1 Reply Last reply Reply Quote 0
            • L
              louis2
              last edited by Jul 1, 2019, 7:20 AM

              At first lets thanks you for the response.

              Before giving a reaction on what is yes or no asymmetric routing, let me repeat here that I personally do not like the fact that the FW does not filter subnet incoming traffic based on the rule set related to the subnet its own interface.

              Back to asymmetric routing.

              As mentioned before and traceable via e.g. tracert, traffic starting at 1.10 => 1.1 (GW) => 2.10 not passing 2.1 (GW) and same behavior on the return path.

              You explained that this is not considered to be symmetric since originating traffic and return traffic are both floating via the same interfaces.

              So if that is true same interfaces is a requirement and same IP’s is not.
              However sometimes I see “TCP:S” related to traffic which can not be asymmetric (if you consider same interfaces as symmetric). Strange ….

              Note that as far as I can see there not an alternative reason for “TCP:S” to show up as described in the next paragraph. Since it concerns local and allowed traffic ….

              Let me mention here a few other reasons that “TCP:S” can show up:

              • Traffic is initiated on a subnet but not passed due to GW-firewall rules. So there is an initial TCP message towards the GW but there will never be an answer. As example, a lot of programs (windows is an “excellent” example) are starting connections to their 'company' many times a day. Frequently I do not like that, especially in case of servers so I block it.
              • The destination does not answer or is not answering in time. Can be for all kind of reasons.

              Whatever, I think it is important that the FW documentation should be very clear and precise about what exactly is considered asymmetric and what not.

              Louis

              1 Reply Last reply Reply Quote 0
              • D
                Derelict LAYER 8 Netgate
                last edited by Jul 1, 2019, 8:24 AM

                TCP:S is the initial connection. There can be no asymmetry there.

                That is either passed or not on the interface upon which that connection is received.

                Chattanooga, Tennessee, USA
                A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                Do Not Chat For Help! NO_WAN_EGRESS(TM)

                1 Reply Last reply Reply Quote 0
                7 out of 7
                • First post
                  7/7
                  Last post
                Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                  This community forum collects and processes your personal information.
                  consent.not_received