{"id":79428,"date":"2024-06-24T11:52:22","date_gmt":"2024-06-24T03:52:22","guid":{"rendered":"https:\/\/version-2.com\/?p=79428"},"modified":"2024-06-26T17:22:58","modified_gmt":"2024-06-26T09:22:58","slug":"how-we-implemented-traffic-routing-in-meshnet-for-increased-security","status":"publish","type":"post","link":"https:\/\/version-2.com\/en\/2024\/06\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\/","title":{"rendered":"How we implemented traffic routing in Meshnet for increased security"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"79428\" class=\"elementor elementor-79428\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-35fe5dd post-content elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"35fe5dd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;cef08c3&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-409a2e9a\" data-id=\"409a2e9a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a8be8f elementor-widget elementor-widget-text-editor\" data-id=\"5a8be8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><div class=\"hidden md:block TableOfContents_tocDesktop__9_aoA\"><p>Traffic routing is a significant feature provided by NordVPN\u2019s Meshnet. Essentially, it allows any Meshnet-connected device, called a node, to become a VPN server for other nodes. To do this, the end user needs only to click a few buttons in the NordVPN app. Under the hood, however, we need to handle setup complexities in the code and ensure compatibility with platforms not inherently designed to operate as VPN servers.\u00a0<\/p><\/div><\/div><div class=\"my-64 text-center\"><p><span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain;\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png\" srcset=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png 1x, https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png 2x\" alt=\"featured image\" data-nimg=\"intrinsic\" \/><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png\" width=\"1200\" height=\"675\" \/><\/span><\/p><\/div><div class=\"style_postContent__uJLGT text-black break-words\" data-content-type-blog=\"\"><div class=\"Article_wrapper__YyQ2_\"><h2 id=\"How a classical VPN server works\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>How a classical VPN server works<\/b><\/h2><p class=\"text-base leading-normal\">First, we should understand how a classical VPN server operates. Meshnet uses the NordLynx protocol, which is based on <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.wireguard.com\/quickstart\/\" target=\"_blank\" rel=\"noopener noreferrer\"><u>WireGuard<\/u><\/a>\u00ae \u2013 a simple, fast VPN <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.wireguard.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><u>that uses state-of-the-art cryptography<\/u><\/a>. For this article, we\u2019ll refer to WireGuard (wg) in our examples and graphics.<\/p><p class=\"text-base leading-normal\">A standard configuration would look like this:<\/p><p><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-1.png\" width=\"1200\" height=\"743\" \/><\/p><div class=\"my-64 text-center\"><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">A standard VPN configuration.<\/p><\/div><p class=\"text-base leading-normal\">To arrive at this setup, a couple of things need to happen.<\/p><p class=\"text-base leading-normal\">First, let\u2019s establish a secure tunnel (purple dotted connection):<\/p><ol><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Virtual network interfaces, labeled as wgC and wgS, (which work like <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.comparitech.com\/blog\/vpn-privacy\/tun-tap-adapters\/\" target=\"_blank\" rel=\"noopener noreferrer\"><u>tun adapters<\/u><\/a>) are created on both client and server sides.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">The client uses a UDP socket to establish a cryptographic session with the server\u2019s address at 192.0.2.1:51820 (in the diagram above, subnet 192.0.2.0\/24 stands for wide area network).<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Private IP addresses (100.64.0.2, 100.64.0.1) are assigned to the client and server respectively.<\/p><\/div><\/li><\/ol><p class=\"text-base leading-normal\">At this point, the client can ping the server using the IP address 100.64.0.1, and the server can ping the client at 100.64.0.2. All IP packets sent through the wgX interface are encrypted and sent via the global internet. The real path of the packet is something like this: <b>wgC<\/b> \u2013(encapsulate)\u2013&gt;<b> lanC<\/b> \u2013&gt; <b>lanR <\/b>\u2013&gt; <b>netR <\/b>\u2013&gt; <b>netS <\/b>\u2013(decapsulate)\u2013&gt; <b>wgS<\/b><\/p><p class=\"text-base leading-normal\">But to the OS, the wgX interface is just another network connection to where IP traffic can be routed, similar to a LAN router.<noscript><\/noscript><\/p><p><img decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-2.png\" width=\"1200\" height=\"743\" \/><\/p><div class=\"my-64 text-center\"><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">To the OS, a virtual interface is just like any other network connection.<\/p><\/div><p class=\"text-base leading-normal\">Now if the client wants to conceal its real IP address, it can configure the <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.techtarget.com\/searchnetworking\/definition\/routing-table\" target=\"_blank\" rel=\"noopener noreferrer\"><u>routing table<\/u><\/a> to direct all default traffic through the wgA interface (some precautions are needed to avoid routing the encrypted traffic itself, but that\u2019s out of the scope of this article).<\/p><p class=\"text-base leading-normal\">Meanwhile, the VPN server needs to be configured to function like a router, accepting incoming packets and forwarding them to their next destination. For this, two features are required:<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>IP forwarding<\/b><\/h3><p class=\"text-base leading-normal\">In most network stack implementations, if a packet arrives on a network interface, it can only be sent out on the same interface. So when the server receives a packet from the wgS interface that\u2019s directed to an IP address outside the network\u2019s subnet, it is dropped.<\/p><p class=\"text-base leading-normal\">Enabling IP forwarding changes this behavior. Now, when a packet arrives at a network interface, it is checked against the network\u2019s entire routing table. If another network interface provides a better match, the packet is forwarded to that interface.<\/p><p class=\"text-base leading-normal\">Packet path on the server would look like this:\u00a0 \u2026 -&gt; wgS \u2013(ip_fowarding)\u2013&gt; netS -&gt; \u2026<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>NATing<\/b><\/h3><p class=\"text-base leading-normal\">IP packets arriving at the VPN server will have a private IP address like 100.64.0.2, assigned to the wgC interface. In most cases, these packets will be directed to a publicly routable IP address. After the packet gets forwarded to the <b>netC<\/b> interface, it still can\u2019t be sent out, because its source address falls within the <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/help.keenetic.com\/hc\/en-us\/articles\/213965789-What-is-the-difference-between-a-public-and-private-IP-address\" target=\"_blank\" rel=\"noopener noreferrer\"><u>private network<\/u><\/a> range. The router uplink only deals with public IP addresses and wouldn\u2019t know which device is sending the packet.<\/p><p class=\"text-base leading-normal\">As such, NAT (network address translation) is used. For every packet that has a unique source IP, port, and in some cases destination, a unique mapping is created in the NATing table.<\/p><p class=\"text-base leading-normal\">For example, if a TCP packet comes from 100.64.0.2:AAAA, it would be mapped to a 192.0.2.1:BBBB address (here AAAA is the port used by software on the client device, and BBBB is a randomly assigned unused port on the server).<\/p><p class=\"text-base leading-normal\">The TCP\u2019s packet\u2019s source IP and port would then be exchanged for NAT mapped values, checksum adjusted, and finally sent out on its merry way to the wider internet.<\/p><p class=\"text-base leading-normal\">If another computer responds to this BBBB port, the NATing table is consulted and destination IP and port values revert to the original values before the packet is sent to the <b>wgC<\/b> interface.<\/p><p class=\"text-base leading-normal\">And that\u2019s all for a very rudimentary setup!<\/p><h2 id=\"Supportable platforms\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>Supportable platforms<\/b><\/h2><p class=\"text-base leading-normal\">The main challenge with these two requirements is that they limit the number of devices that can function as routers (apart from implementing a user space transport layer multiplexing\/demultiplexing logic).<\/p><p class=\"text-base leading-normal\">Typically, if we want to set up IP forwarding and NAT, we need root\/administrator permissions. Most platforms with strong <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/csrc.nist.gov\/glossary\/term\/sandbox\"><u>sandboxing<\/u><\/a> like macOS App Store, iOS, and Android do not provide official APIs to enable this.<\/p><p class=\"text-base leading-normal\">That leaves 3 \u201cplatforms\u201d we do support:<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>Linux<\/b><\/h3><p class=\"text-base leading-normal\">Linux is the easiest one of the bunch because it has everything we need already built in, and our NordVPN service, running as root, can set everything up.<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>macOS Sideload<\/b><\/h3><p class=\"text-base leading-normal\">Unlike the App Store version (which I count as a separate platform), with macOS Sideload applications it\u2019s possible to create <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/developer.apple.com\/library\/archive\/documentation\/Security\/Conceptual\/authorization_concepts\/03authtasks\/authtasks.html#\/apple_ref\/doc\/uid\/TP30000995-CH206-TPXREF36\" target=\"_blank\" rel=\"noopener noreferrer\"><u>launchd<\/u><\/a> services that run with root permissions. This unlocks features that Darwin (the core Unix operating system of macOS) inherits from <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/docs.freebsd.org\/en\/articles\/explaining-bsd\/\" target=\"_blank\" rel=\"noopener noreferrer\"><u>BSD<\/u><\/a> like ip_forwarding and pf (packet filter), which are used to set up NATing and filtering.<\/p><h3 class=\"text-h3 leading-tight text-left\"><b>Windows<\/b><\/h3><p class=\"text-base leading-normal\">Setting up IP forwarding is as trivial as a registry modification. However, even if Windows has an official <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/techcommunity.microsoft.com\/t5\/virtualization\/windows-nat-winnat-capabilities-and-limitations\/ba-p\/382303\" target=\"_blank\" rel=\"noopener noreferrer\"><u>NAT<\/u><\/a>, we found it difficult to use during testing. It does not properly work with Windows Home editions. Being primarily designed for use with <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/www.cloudwards.net\/hyper-v\/\" target=\"_blank\" rel=\"noopener noreferrer\"><u>Hyper-V<\/u><\/a>, a lot of undefined behaviors crop up when working with our custom adapter drivers. To work around this, we built and shipped our own implementation for NAT.<\/p><h2 id=\"How Meshnet traffic routing works\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>How Meshnet traffic routing works<\/b><\/h2><p class=\"text-base leading-normal\">Now that we know how a regular VPN server looks and works, we can compare it to how it operates in Meshnet:<\/p><div class=\"my-64 text-center\"><p><span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain;\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-3.png\" srcset=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-3.png 1x, https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-3.png 2x\" alt=\"Diagram of Meshnet-enabled VPN configuration.\" data-nimg=\"intrinsic\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-3.png\" width=\"1200\" height=\"743\" \/><noscript><\/noscript><\/span><\/p><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">A Meshnet VPN configuration.<\/p><\/div><p class=\"text-base leading-normal\">The first interesting difference to observe is that, unlike a VPN server, in general, both Meshnet devices will be located in their local area networks.<\/p><p class=\"text-base leading-normal\">And without Meshnet\u2019s <a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/nordvpn.com\/blog\/achieving-nat-traversal-with-wireguard\/\" target=\"_blank\" rel=\"noopener noreferrer\">NAT traversal<\/a> capabilities, turning a device into a VPN server for easy connection by other devices would be challenging.<\/p><p class=\"text-base leading-normal\">The second difference is that your dedicated VPN server will usually have not one, but two NATing steps.<\/p><ol><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">The client&#8217;s (device A) source IP is changed to the server&#8217;s IP (device B).<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">The server&#8217;s IP (device B) is then changed to the router&#8217;s IP.<\/p><\/div><\/li><\/ol><p class=\"text-base leading-normal\">This unlocks some interesting behavior: If device A is your phone, and device B is your home PC, routing through B makes it appear to your network that your phone is actually your PC. This allows you to securely access your home network without needing API services hosted on a public server.<\/p><p class=\"text-base leading-normal\">And if you use a service that only allows access from your home network, it becomes impossible to tell whether the network messages are coming directly from your home PC or a device routing through it.<\/p><p class=\"text-base leading-normal\">At this point, if you are even slightly inclined towards security, some alarm bells may be ringing.<\/p><h2 id=\"Security considerations\" class=\"text-h2 leading-none text-left Heading_richTextH2__l81Mp\"><b>Security considerations<\/b><\/h2><p class=\"text-base leading-normal\">Traffic routing is a very powerful feature:<\/p><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">You can take over a local network.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">The device functioning as a VPN server can inspect all traffic going through it.<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\">Other devices can essentially mimic your device.<\/p><\/div><\/li><\/ul><p class=\"text-base leading-normal\">As such, we want the user to have as much control as possible, so a couple of flags exist to be set on each device per connection.<\/p><ul class=\"list-disc ml-24\"><li class=\"ml-20\"><div><p class=\"text-base leading-normal\"><b>Allow traffic routing<\/b>: Specifies if a device can route its traffic through the device acting as a VPN server at all<\/p><\/div><\/li><li class=\"ml-20\"><div><p class=\"text-base leading-normal\"><b>Allow local network access<\/b>: Specifies if the device can communicate with other devices in the server\u2019s local area network<\/p><\/div><\/li><\/ul><p class=\"text-base leading-normal\">Generally, when using this feature, we want to avoid behaviors that might not be obvious at first glance.<\/p><p class=\"text-base leading-normal\">A great example of this is a security issue we found and mitigated during development:<\/p><div class=\"my-64 text-center\"><p><span style=\"box-sizing: border-box; display: inline-block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: relative; max-width: 100%;\"><span style=\"box-sizing: border-box; display: block; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; max-width: 100%;\"><img style=\"display: block; max-width: 100%; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px;\" alt=\"\" aria-hidden=\"true\" \/><\/span><img decoding=\"async\" style=\"position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: contain;\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-4.png\" srcset=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-4.png 1x, https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-4.png 2x\" alt=\"Traffic routing could cause unexpected security issues\" data-nimg=\"intrinsic\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_1200,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/body-4.png\" width=\"1200\" height=\"743\" \/><noscript><\/noscript><\/span><\/p><p class=\"text-nano leading-normal text-left text-center text-gray-600 my-8\">Traffic routing could cause unexpected security issues.<\/p><\/div><p class=\"text-base leading-normal\">Let\u2019s say we have two Meshnet accounts: Mesh X with devices A and B, and Mesh Y with device C. Device C has an external connection to device B, which allows traffic routing for C.<\/p><p class=\"text-base leading-normal\">Without any additional network rules, when C is routing through B and pings A\u2019s private IP, it would actually reach A, even though they are not configured to be directly connected. It does not even require NAT to work in this case.<\/p><p class=\"text-base leading-normal\">So without any explicit user input, device B has unintentionally exposed device A to device C.<\/p><p class=\"text-base leading-normal\">To prevent this, we ensure that all such packets are dropped by B. The only way for C to reach A is to send a Meshnet invite and form a direct connection, making this relationship explicit.<\/p><p class=\"text-base leading-normal\">In short, traffic routing is a relatively simple technical solution that unlocks many interesting capabilities in the Meshnet network.<\/p><p class=\"text-base leading-normal\"><a class=\"cursor-pointer outline-none transition-colors duration-250 ease-out text-blue-500 hover:text-blue-600 focus:text-blue-400\" href=\"https:\/\/meshnet.nordvpn.com\/getting-started\/meshnet-explained\">Read more about Meshnet.<br \/><\/a><\/p><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cf03edf elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cf03edf\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b576c6d\" data-id=\"b576c6d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bfd91ca elementor-widget elementor-widget-shortcode\" data-id=\"bfd91ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"page\" data-elementor-id=\"18103\" class=\"elementor elementor-18103\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-748947f elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"748947f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7995c19\" data-id=\"7995c19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a437045 elementor-widget elementor-widget-image-box\" data-id=\"a437045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">About Version 2 Digital<\/h3><p class=\"elementor-image-box-description\">Version 2 Digital is one of the most dynamic IT companies in Asia. The company distributes a wide range of IT products across various areas including cyber security, cloud, data protection, end points, infrastructures, system monitoring, storage, networking, business productivity and communication products.\n<br><br>\nThrough an extensive network of channels, point of sales, resellers, and partnership companies, Version 2 offers quality products and services which are highly acclaimed in the market. Its customers cover a wide spectrum which include Global 1000 enterprises, regional listed companies, different vertical industries, public utilities, Government, a vast number of successful SMEs, and consumers in various Asian cities.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\n\t\t<div data-elementor-type=\"page\" data-elementor-id=\"63561\" class=\"elementor elementor-63561\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1b6aa2c4 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"1b6aa2c4\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1b283ee5\" data-id=\"1b283ee5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4e466f1a elementor-widget elementor-widget-text-editor\" data-id=\"4e466f1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>About NordLayer<br \/><\/strong>NordLayer is an adaptive network access security solution for modern businesses \u2013 from the world\u2019s most trusted cybersecurity brand, Nord Security.<\/p><p>The web has become a chaotic space where safety and trust have been compromised by cybercrime and data protection issues. Therefore, our team has a global mission to shape a more trusted and peaceful online future for people everywhere.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9e34e91 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"9e34e91\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bb2c932\" data-id=\"bb2c932\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c6a493c elementor-widget elementor-widget-text-editor\" data-id=\"c6a493c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>About NordLayer<br \/><\/strong>NordLayer is an adaptive network access security solution for modern businesses \u2013 from the world\u2019s most trusted cybersecurity brand, Nord Security.<\/p><p>The web has become a chaotic space where safety and trust have been compromised by cybercrime and data protection issues. Therefore, our team has a global mission to shape a more trusted and peaceful online future for people everywhere.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Traffic routing is a significant feature provided by No [&hellip;]<\/p>","protected":false},"author":149011790,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[973,1273,61],"tags":[974,1272],"class_list":["post-79428","post","type-post","status-publish","format-standard","hentry","category-nord-security","category-1273","category-press-release","tag-nord-security","tag-1272"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How we implemented traffic routing in Meshnet for increased security - Version 2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How we implemented traffic routing in Meshnet for increased security - Version 2\" \/>\n<meta property=\"og:description\" content=\"Traffic routing is a significant feature provided by No [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security\" \/>\n<meta property=\"og:site_name\" content=\"Version 2\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-24T03:52:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-26T09:22:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png\" \/>\n<meta name=\"author\" content=\"tracylamv2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tracylamv2\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2024\\\/06\\\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\\\/\"},\"author\":{\"name\":\"tracylamv2\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/011bc7c3731c930bcfeecd52fefb6365\"},\"headline\":\"How we implemented traffic routing in Meshnet for increased security\",\"datePublished\":\"2024-06-24T03:52:22+00:00\",\"dateModified\":\"2024-06-26T09:22:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2024\\\/06\\\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\\\/\"},\"wordCount\":1560,\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/06\\\/featured-image.png\",\"keywords\":[\"Nord Security\",\"2024\"],\"articleSection\":[\"Nord Security\",\"2024\",\"Press Release\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/version-2.com\\\/2024\\\/06\\\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\\\/\",\"url\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security\",\"name\":\"How we implemented traffic routing in Meshnet for increased security - Version 2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/06\\\/featured-image.png\",\"datePublished\":\"2024-06-24T03:52:22+00:00\",\"dateModified\":\"2024-06-26T09:22:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/06\\\/featured-image.png\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/nordsec\\\/f_auto,c_limit,w_3840,q_auto\\\/v1\\\/nord-security-web\\\/blog\\\/categories\\\/engineering\\\/2024\\\/06\\\/featured-image.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nordsecurity.com\\\/blog\\\/traffic-routing-in-meshnet-increased-security#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/version-2.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How we implemented traffic routing in Meshnet for increased security\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"name\":\"Version 2\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/version-2.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\",\"name\":\"Version 2\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"width\":1795,\"height\":335,\"caption\":\"Version 2\"},\"image\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/011bc7c3731c930bcfeecd52fefb6365\",\"name\":\"tracylamv2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"caption\":\"tracylamv2\"},\"url\":\"https:\\\/\\\/version-2.com\\\/en\\\/author\\\/tracylamv2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How we implemented traffic routing in Meshnet for increased security - Version 2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security","og_locale":"en_US","og_type":"article","og_title":"How we implemented traffic routing in Meshnet for increased security - Version 2","og_description":"Traffic routing is a significant feature provided by No [&hellip;]","og_url":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security","og_site_name":"Version 2","article_published_time":"2024-06-24T03:52:22+00:00","article_modified_time":"2024-06-26T09:22:58+00:00","og_image":[{"url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png","type":"","width":"","height":""}],"author":"tracylamv2","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tracylamv2","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#article","isPartOf":{"@id":"https:\/\/version-2.com\/2024\/06\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\/"},"author":{"name":"tracylamv2","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/011bc7c3731c930bcfeecd52fefb6365"},"headline":"How we implemented traffic routing in Meshnet for increased security","datePublished":"2024-06-24T03:52:22+00:00","dateModified":"2024-06-26T09:22:58+00:00","mainEntityOfPage":{"@id":"https:\/\/version-2.com\/2024\/06\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\/"},"wordCount":1560,"publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"image":{"@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png","keywords":["Nord Security","2024"],"articleSection":["Nord Security","2024","Press Release"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/version-2.com\/2024\/06\/how-we-implemented-traffic-routing-in-meshnet-for-increased-security\/","url":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security","name":"How we implemented traffic routing in Meshnet for increased security - Version 2","isPartOf":{"@id":"https:\/\/version-2.com\/zh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#primaryimage"},"image":{"@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png","datePublished":"2024-06-24T03:52:22+00:00","dateModified":"2024-06-26T09:22:58+00:00","breadcrumb":{"@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#primaryimage","url":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png","contentUrl":"https:\/\/res.cloudinary.com\/nordsec\/f_auto,c_limit,w_3840,q_auto\/v1\/nord-security-web\/blog\/categories\/engineering\/2024\/06\/featured-image.png"},{"@type":"BreadcrumbList","@id":"https:\/\/nordsecurity.com\/blog\/traffic-routing-in-meshnet-increased-security#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/version-2.com\/"},{"@type":"ListItem","position":2,"name":"How we implemented traffic routing in Meshnet for increased security"}]},{"@type":"WebSite","@id":"https:\/\/version-2.com\/zh\/#website","url":"https:\/\/version-2.com\/zh\/","name":"Version 2","description":"","publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/version-2.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/version-2.com\/zh\/#organization","name":"Version 2","url":"https:\/\/version-2.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","contentUrl":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","width":1795,"height":335,"caption":"Version 2"},"image":{"@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/011bc7c3731c930bcfeecd52fefb6365","name":"tracylamv2","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","caption":"tracylamv2"},"url":"https:\/\/version-2.com\/en\/author\/tracylamv2\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbQRKm-kF6","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/79428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/users\/149011790"}],"replies":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/comments?post=79428"}],"version-history":[{"count":6,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/79428\/revisions"}],"predecessor-version":[{"id":79642,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/79428\/revisions\/79642"}],"wp:attachment":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/media?parent=79428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/categories?post=79428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/tags?post=79428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}