<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Romeo Mihalcea</title>
    <description>The latest articles on Forem by Romeo Mihalcea (@ciokan).</description>
    <link>https://forem.com/ciokan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F125581%2Fc279b4a5-9a4c-4626-8840-a0bcfd6441e1.jpeg</url>
      <title>Forem: Romeo Mihalcea</title>
      <link>https://forem.com/ciokan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ciokan"/>
    <language>en</language>
    <item>
      <title>ISP proxies, AI crawlers, and the slow death of datacenter IPs: 2026 in numbers</title>
      <dc:creator>Romeo Mihalcea</dc:creator>
      <pubDate>Tue, 05 May 2026 12:15:39 +0000</pubDate>
      <link>https://forem.com/ciokan/isp-proxies-ai-crawlers-and-the-slow-death-of-datacenter-ips-2026-in-numbers-203f</link>
      <guid>https://forem.com/ciokan/isp-proxies-ai-crawlers-and-the-slow-death-of-datacenter-ips-2026-in-numbers-203f</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Bots passed humans on the open web. IP reputation feeds stopped working for residential traffic. IPv4 prices collapsed. AI crawlers became a measurable tax on public sites. And Europe finally started writing big GDPR checks while only fining 1.3% of complaints. If you ship anything that touches the public web at scale, the IP infrastructure you set up in 2022 is doing more harm than good in 2026.&lt;/p&gt;

&lt;p&gt;The headline numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;51%&lt;/strong&gt; of all web traffic in 2024 was automated. Bots beat humans for the first time in a decade. (Imperva 2025 Bad Bot Report)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;37%&lt;/strong&gt; was bad bots specifically, up from 32% in 2023. Sixth straight yearly increase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2.8%&lt;/strong&gt; of websites tested in 2025 were fully protected against bots, down from 8.4% the year before. (DataDome 2025 Global Bot Security Report)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;78%&lt;/strong&gt; of residential-IP sessions in a 4-billion-session study evaded conventional IP reputation feeds. (GreyNoise / IPInfo, April 2026)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&amp;lt;$21/IP&lt;/strong&gt; for large-block IPv4 transfers in May 2025. Roughly a 10-year low. (IPv4.Global)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;+187%&lt;/strong&gt; YoY growth in AI-driven traffic in 2025. (HUMAN Security)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;62% → 90%&lt;/strong&gt; of investment firms using alternative data, in two years. (Lowenstein Sandler)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;€1.15B&lt;/strong&gt; in GDPR fines from EU DPAs in 2025; only &lt;strong&gt;1.3%&lt;/strong&gt; of complaints actually result in a fine. (EDPB; noyb)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bots overtook humans in 2024 and the gap keeps widening
&lt;/h2&gt;

&lt;p&gt;If you've shipped a scraper in the last two years you already feel this. The data behind the gut feeling: 51% of web traffic in 2024 was automated, per Imperva. Bad bots specifically were 37%, up from 32%. That 5-point jump is the largest single-year increase in Imperva's twelve-year time series.&lt;/p&gt;

&lt;p&gt;The defense side moved the wrong way. DataDome tested over 16,900 sites across 22 industries in 2025 and found only 2.8% were fully protected, down from 8.4% in 2024. 61% of domains failed to detect a single test bot.&lt;/p&gt;

&lt;p&gt;That's not a story about bot mitigation getting worse. It's a story about generative AI lowering the cost of writing request-level automation. People who couldn't afford a developer can now prompt one.&lt;/p&gt;

&lt;p&gt;The target surface shifted too. 44% of advanced bot traffic now hits APIs instead of HTML pages. Verizon's 2025 DBIR puts the median rate of credential-stuffing activity across SSO providers at 19% of daily auth attempts. Roughly one in five logins at identity-provider scale is machine-driven. That's wild.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why datacenter IPs stopped working
&lt;/h2&gt;

&lt;p&gt;A joint GreyNoise / IPInfo study published in April 2026 examined 4 billion edge-attack sessions over three months. The findings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;39% of those sessions came from residential IPs.&lt;/li&gt;
&lt;li&gt;78% of the residential-IP sessions evaded IP reputation feeds entirely.&lt;/li&gt;
&lt;li&gt;89.7% of the malicious residential IPs were active for under a month before rotating out.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Static IP blocklists, the backbone of anti-bot defense for a decade, no longer carry the signal they used to.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Detection now has to come from somewhere else: behavior over time, browser fingerprint, session history, telemetry. The IP alone tells defenders very little.&lt;/p&gt;

&lt;p&gt;That sets up a weird market. Residential-class IPs are the dominant workaround, and the underlying economics got cheap fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPv4 prices collapsed
&lt;/h3&gt;

&lt;p&gt;Large-block (/16+) transfer prices fell to under $21 per IP in May 2025, the lowest in roughly a decade per IPv4.Global. 8,062 IPv4 transfers were recorded globally in 2025, near an all-time high in transfer volume. Monthly lease rates sit at roughly $0.40 to $0.50 per IP.&lt;/p&gt;

&lt;p&gt;The structural reason: IPv6 finally caught up. Google reports US IPv6 share crossed 50% in February 2025; France hit ~86% by February 2026. New enterprise workloads are migrating to v6, and incumbents are liquidating hoarded v4 blocks. An ISP proxy is, structurally, an IPv4 lease on a reputable consumer-ISP ASN with the right reverse DNS pointer. Those numbers set the floor on unit economics across the sector.&lt;/p&gt;

&lt;h2&gt;
  
  
  The AI crawler problem nobody had two years ago
&lt;/h2&gt;

&lt;p&gt;This one sneaks up on you if you run any public site with content.&lt;/p&gt;

&lt;p&gt;Cloudflare measured AI crawlers at ~8.7% of all HTML request traffic in 2025. Googlebot was 4.5%; the other AI bots together were ~4.2%. User-driven AI crawls (someone hits "research this" in their assistant) grew 15× year over year.&lt;/p&gt;

&lt;p&gt;HUMAN Security's 2026 State of AI Traffic benchmark reports AI-driven traffic up 187% YoY, with agentic-browser traffic up 7,851%. Akamai counted 25 billion AI-bot requests to commerce sites in July and August 2025 alone. DoubleVerify attributes 86% of the General Invalid Traffic increase in 2025 to AI crawlers, not classical fraud.&lt;/p&gt;

&lt;p&gt;If you're an SRE, AI crawlers are now a meaningful share of your tail-latency budget, and they aren't all polite about robots.txt. If you're building anything that needs a clean read of the live web at scale (alt data, market intel, training corpora) you're competing for IP infrastructure with everyone running an LLM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison: datacenter vs rotating residential vs ISP proxies
&lt;/h2&gt;

&lt;p&gt;If you're picking infra in 2026, here's the practical shape of the tradeoff:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Datacenter&lt;/th&gt;
&lt;th&gt;Rotating residential&lt;/th&gt;
&lt;th&gt;ISP (static residential)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ASN type&lt;/td&gt;
&lt;td&gt;Hosting (AWS, Hetzner, GCP)&lt;/td&gt;
&lt;td&gt;Consumer ISPs via real devices&lt;/td&gt;
&lt;td&gt;Consumer ISPs, hosted on servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP reputation pass rate&lt;/td&gt;
&lt;td&gt;Low. Detected within hours on protected sites.&lt;/td&gt;
&lt;td&gt;High. ~78% evade reputation feeds.&lt;/td&gt;
&lt;td&gt;High. Same ASN trust as residential.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session stability&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low. IP rotates on device reconnect.&lt;/td&gt;
&lt;td&gt;High. Static IPs, server-grade uptime.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed&lt;/td&gt;
&lt;td&gt;Fast (~ms)&lt;/td&gt;
&lt;td&gt;Variable, often slow&lt;/td&gt;
&lt;td&gt;Fast (~ms)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best fit&lt;/td&gt;
&lt;td&gt;Internal tools, low-protection targets&lt;/td&gt;
&lt;td&gt;Throwaway high-volume scrapes&lt;/td&gt;
&lt;td&gt;Long sessions, logged-in flows, ad verification, SERP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worst fit&lt;/td&gt;
&lt;td&gt;Anything with modern bot detection&lt;/td&gt;
&lt;td&gt;Cart fills, auth flows, multi-step scrapes&lt;/td&gt;
&lt;td&gt;Pure rotation needs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The middle column is where rotating residential pools shine. The right column is where ISP proxies pay for themselves: anything that needs the same IP across a 20-minute logged-in session, or geo-stable for a SERP scrape, or trusted enough to render real ads instead of cloaked decoys.&lt;/p&gt;

&lt;h2&gt;
  
  
  What teams are actually buying this stuff for
&lt;/h2&gt;

&lt;p&gt;Five workloads dominate the buyer mix in 2026, and the numbers behind each are big enough to matter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Retail price monitoring.&lt;/strong&gt; Global e-commerce hit $6.42T in 2025, 20.5% of all retail (eMarketer). McKinsey's classic finding still holds: a 1% price improvement yields about 8.7% operating-profit lift. At that elasticity a continuous competitor scan pays for itself in weeks. Datacenter scrapes against major retailers now get silently poisoned with bad prices instead of blocked, which is worse than blocked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ad verification.&lt;/strong&gt; US digital ad revenue hit $294.6B in 2025 (IAB/PwC). Programmatic was $162.4B of it. The ANA reports $26.8B of programmatic spend leaked to inefficiency in Q2 2025 alone, up 34% in two years. You need real residential IPs in the right geos to see what campaigns actually look like for end users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Travel fare aggregation.&lt;/strong&gt; Imperva found 48% of travel-industry traffic in 2024 was bad bots, the highest share of any sector. Skift reports the top four OTAs control 96% of the sector's $58B in revenue. Metasearch teams need stable residential egress just to keep rates fresh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO / SERP rank tracking.&lt;/strong&gt; SEO software is an $84.9B market in 2025 (Fortune Business Insights), forecast to $154.6B by 2030. Personalized SERPs make rank tracking from scraping farms unreliable; agencies need geo-distributed residential egress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alternative data for hedge funds.&lt;/strong&gt; This one's the sleeper hit. Investment firms using alt data jumped from 62% in 2023 to 90% in 2025 (Lowenstein Sandler). 89% plan to grow budgets. Two-thirds already spend $1M+ per year. Grand View projects the alt-data market at $135.7B by 2030 from $11.65B in 2024, a 63.4% CAGR.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've wondered who writes the checks for residential IPs at industrial scale, it isn't marketing teams. It's quants and LLM labs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The legal track moved more than most teams realize
&lt;/h2&gt;

&lt;p&gt;Two years of case law and regulation worth knowing before you ship a commercial scraper:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;US: scraping public data is defensible.&lt;/strong&gt; Van Buren v. United States (2021) read the CFAA's "without authorization" language narrowly. The Ninth Circuit reaffirmed hiQ Labs v. LinkedIn in 2022; that case eventually settled for $500K plus a permanent injunction and data destruction. Public-data scraping at the appellate level is, post-hiQ, on solid ground.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EU: enforcement scaled, but base rate stays low.&lt;/strong&gt; National DPAs issued €1,145,760,374 in GDPR fines during 2025 (EDPB). Cumulative fines since 2018 sit above €4.2B across 6,680+ decisions. The counter-signal worth pinning to your wall: only 1.3% of complaints brought to EU DPAs end in a fine, per noyb. Headline totals are real. The base rate per complaint is much lower than the totals imply.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EU Data Act and AI Act.&lt;/strong&gt; The Data Act applies from 12 September 2025. The AI Act's Article 53 requires general-purpose AI providers to respect Article 4(3) machine-readable opt-outs and publish a "sufficiently detailed summary" of training data, including main scraped domains. Territorial scope follows EU market placement, so EU training-data compliance effectively exports anywhere a model is sold in Europe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;California woke up.&lt;/strong&gt; The California Privacy Protection Agency's largest fine to date is $1.35M against Tractor Supply in September 2025, on Global Privacy Control non-compliance. The CPPA has telegraphed that GPC compliance is the priority enforcement vector through 2026.&lt;/p&gt;

&lt;p&gt;None of this is legal advice. Talk to a lawyer before scaling anything commercial.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What's an ISP proxy in plain terms?&lt;/strong&gt;&lt;br&gt;
A server-hosted IP address that originates from a consumer ISP's ASN (Comcast, Verizon, BT, Deutsche Telekom, etc.) instead of a datacenter ASN (AWS, Hetzner, GCP). Sometimes called a static residential proxy. From a target site's perspective it looks like home broadband, but it runs on server hardware for speed and session stability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why not just use rotating residential IPs?&lt;/strong&gt;&lt;br&gt;
For workflows that need a stable session (logged-in scrapes, multi-step flows, cart fills, ad verification) IP rotation breaks things. ISP proxies give you residential-grade trust without the volatility.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are datacenter proxies actually dead?&lt;/strong&gt;&lt;br&gt;
For modern bot-protected targets, in practice yes. They still work for low-protection internal tools, certain APIs, or staging. They will not survive a price-monitoring run against a Tier-1 retailer or a SERP scrape on a tracked term.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much do ISP proxies cost in 2026?&lt;/strong&gt;&lt;br&gt;
Underlying IPv4 lease rates are about $0.40 to $0.50 per IP per month, after large-block transfer prices fell under $21 per IP in 2025. Retail pricing has tracked those costs down. Single-digit dollars per IP per month is the realistic range at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is scraping legal?&lt;/strong&gt;&lt;br&gt;
Public-data scraping in the US is defensible after Van Buren and the Ninth Circuit's reaffirmation of hiQ. EU collection requires GDPR, EU Data Act (effective 12 Sept 2025), and AI Act compliance for any training-data use. Talk to a lawyer before scaling anything commercial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How big is the proxy market really?&lt;/strong&gt;&lt;br&gt;
Mordor Intelligence sizes the residential proxy server software market at $122M in 2025, growing to $148M by 2030 (3.98% CAGR). The downstream markets that consume the IP layer are where the growth is: web scraping at $1.03B → $2.23B by 2031, alternative data at $11.65B → $135.7B by 2030.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What changed in the last 12 months specifically?&lt;/strong&gt;&lt;br&gt;
Three things. AI crawler traffic became a measurable, named tax on the public web. IPv4 prices collapsed alongside IPv6 finally crossing 50% in major markets. And IP reputation feeds, the load-bearing component of bot defense for a decade, are now functionally defeated for residential traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell someone starting fresh in 2026
&lt;/h2&gt;

&lt;p&gt;If you're building automation that touches the public web at scale, your IP layer is no longer set-it-and-forget-it. Datacenter IPs are first-resort blocked, rotating residential pools break logged-in flows, and the IPs that work for serious work are residential-grade with stable sessions. That's the gap ISP proxies fill, and the data behind that gap is the rest of this post.&lt;/p&gt;

&lt;p&gt;A few honest closing notes. The Mordor residential-proxy figure ($122M) is software-revenue scope only; broader sizings that bundle bandwidth resale and DaaS spend run an order of magnitude larger. The 51% bot share number from Imperva is measured against sites under their protection (so skewed toward enterprise targets attackers hunt). Cloudflare's ~30% bot share over the full anycast network is not the same denominator. Both numbers are correct at their stated scope. Don't conflate them.&lt;/p&gt;

&lt;p&gt;This post was written by the team behind anonymous-proxies.net. We sell ISP proxies among other products. The full long-form analysis with all 50+ data points, every primary-source citation, the mega-table, and the methodology notes lives here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://anonymous-proxies.net/posts/isp-proxies-statistics-2026/" rel="noopener noreferrer"&gt;https://anonymous-proxies.net/posts/isp-proxies-statistics-2026/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
      <category>scraping</category>
      <category>ai</category>
    </item>
    <item>
      <title>What a VPN Actually Protects You From (A Developer's Threat Model)</title>
      <dc:creator>Romeo Mihalcea</dc:creator>
      <pubDate>Tue, 21 Apr 2026 02:22:36 +0000</pubDate>
      <link>https://forem.com/ciokan/what-a-vpn-actually-protects-you-from-a-developers-threat-model-4h95</link>
      <guid>https://forem.com/ciokan/what-a-vpn-actually-protects-you-from-a-developers-threat-model-4h95</guid>
      <description>&lt;h1&gt;
  
  
  What a VPN Actually Protects You From (A Developer's Threat Model)
&lt;/h1&gt;

&lt;p&gt;Every "VPN explained" post reads like a sponsored ad. Let's do this properly — at the protocol level, with the actual threats mapped to the actual mitigations.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;A VPN mitigates &lt;strong&gt;Layer 3/4 threats&lt;/strong&gt;: passive ISP observation, Wi-Fi sniffing, IP-based geolocation, and some MITM scenarios on unencrypted endpoints. It does &lt;strong&gt;nothing&lt;/strong&gt; against application-layer threats: malware, phishing, logged-in session tracking, browser fingerprinting, or DNS-over-HTTPS leaks if you misconfigure it.&lt;/p&gt;

&lt;p&gt;If you're thinking about a VPN as a security tool, map it against your actual threat model before you bother.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a VPN actually does (at the packet level)
&lt;/h2&gt;

&lt;p&gt;Your client encapsulates IP packets inside an encrypted tunnel (WireGuard uses ChaCha20-Poly1305, OpenVPN uses AES-GCM via TLS). The packets exit at the VPN server, which NATs them to the internet using its own public IP. The return path reverses it.&lt;/p&gt;

&lt;p&gt;That's the whole mechanism. Two side effects:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your ISP sees one flow: &lt;code&gt;you -&amp;gt; vpn_endpoint:51820 UDP&lt;/code&gt; (encrypted)&lt;/li&gt;
&lt;li&gt;Destination servers see &lt;code&gt;vpn_endpoint_ip&lt;/code&gt; as the source&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything marketers claim about VPNs is downstream of those two facts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Threat model: what a VPN mitigates
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Passive ISP observation
&lt;/h3&gt;

&lt;p&gt;Without a VPN, your ISP sees every DNS query and every TLS SNI. Yes, ESNI/ECH is rolling out, but coverage is still patchy — check yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# See what your ISP can observe&lt;/span&gt;
tcpdump &lt;span class="nt"&gt;-i&lt;/span&gt; eth0 &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s1"&gt;'port 53 or port 443'&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s2"&gt;"Host:|server_name"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With a VPN up, that same capture shows one encrypted flow to your VPN endpoint. Nothing else.&lt;/p&gt;

&lt;p&gt;In the US, ISPs have been legally allowed to sell browsing metadata since the 2017 repeal of the FCC broadband privacy rules. Several EU states still mandate metadata retention under national law despite the CJEU striking down blanket retention in &lt;em&gt;Digital Rights Ireland&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Hostile LANs
&lt;/h3&gt;

&lt;p&gt;Coffee shop, hotel, conference Wi-Fi. HTTPS covers content but not the SNI, not DNS (unless you're on DoH/DoT), and not the fact that someone on the same subnet can ARP-spoof your gateway.&lt;/p&gt;

&lt;p&gt;Quick paranoia test on a shared network:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Are you on the same subnet as random strangers?&lt;/span&gt;
ip &lt;span class="nt"&gt;-4&lt;/span&gt; addr show
arp &lt;span class="nt"&gt;-a&lt;/span&gt; | &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that number is more than 2-3, you're on a shared LAN with untrusted peers. VPN on.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. IP-based attribution
&lt;/h3&gt;

&lt;p&gt;Every request logs your source IP. Combined with the TLS fingerprint (JA3/JA4) and browser fingerprint, it becomes a durable identifier. Swapping the IP breaks the geolocation component and forces adversaries to rely on the weaker signals alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. ISP-level traffic shaping
&lt;/h3&gt;

&lt;p&gt;Some ISPs still throttle based on DPI-identified traffic classes. Tunneled traffic is opaque to the classifier, so it gets the default QoS treatment. Not a privacy win, but a real performance win for some users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Threat model: what a VPN does NOT mitigate
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Threat Vector&lt;/th&gt;
&lt;th&gt;VPN helps?&lt;/th&gt;
&lt;th&gt;What actually helps&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Malware in downloaded binaries&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Code signing verification, EDR, sandboxing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phishing / credential theft&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;WebAuthn/passkeys, 2FA, password manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-site tracking post-login&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Cookie isolation, container tabs, separate profiles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser fingerprinting (Canvas, WebGL, fonts)&lt;/td&gt;
&lt;td&gt;Marginal&lt;/td&gt;
&lt;td&gt;Firefox &lt;code&gt;privacy.resistFingerprinting&lt;/code&gt;, Brave, Tor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLS fingerprinting (JA3/JA4)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;uTLS, custom client bindings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DNS leaks&lt;/td&gt;
&lt;td&gt;Only if configured&lt;/td&gt;
&lt;td&gt;Force DNS through tunnel, disable IPv6 or route it too&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebRTC IP leaks&lt;/td&gt;
&lt;td&gt;Only if configured&lt;/td&gt;
&lt;td&gt;Block WebRTC at browser level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timing correlation attacks&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Tor with entry guards&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Application-level telemetry&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Firewall rules, strict egress policies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The leaks you need to test
&lt;/h2&gt;

&lt;p&gt;A VPN that leaks your real IP is worse than no VPN — false sense of security. Check every time you change configs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Real IP check&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://ipinfo.io

&lt;span class="c"&gt;# DNS leak check — should show VPN provider resolver, not ISP&lt;/span&gt;
dig +short txt ch whoami.cloudflare @1.1.1.1
nslookup &lt;span class="nt"&gt;-type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;txt whoami.ds.akahelp.net

&lt;span class="c"&gt;# IPv6 leak (common on WireGuard if you forget ::/0)&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-6&lt;/span&gt; https://ipv6.icanhazip.com &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"No v6 leak"&lt;/span&gt;

&lt;span class="c"&gt;# WebRTC — browser-only, use https://browserleaks.com/webrtc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If any of those don't match your VPN endpoint, your config is broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  WireGuard kill switch, the lazy way
&lt;/h2&gt;

&lt;p&gt;If the tunnel drops, default route falls back to the physical interface — traffic goes out in the clear and you don't notice. Here's a minimal kill switch using the &lt;code&gt;PostUp&lt;/code&gt;/&lt;code&gt;PreDown&lt;/code&gt; hooks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[Interface]&lt;/span&gt;
&lt;span class="py"&gt;PrivateKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;your_key&amp;gt;&lt;/span&gt;
&lt;span class="py"&gt;Address&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;10.0.0.2/24&lt;/span&gt;
&lt;span class="py"&gt;DNS&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;1.1.1.1&lt;/span&gt;

&lt;span class="py"&gt;PostUp&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT&lt;/span&gt;
&lt;span class="py"&gt;PreDown&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT&lt;/span&gt;

&lt;span class="nn"&gt;[Peer]&lt;/span&gt;
&lt;span class="py"&gt;PublicKey&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;peer_key&amp;gt;&lt;/span&gt;
&lt;span class="py"&gt;AllowedIPs&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0/0, ::/0&lt;/span&gt;
&lt;span class="py"&gt;Endpoint&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;vpn.example.com:51820&lt;/span&gt;
&lt;span class="py"&gt;PersistentKeepalive&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;25&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now if the tunnel goes down, packets get dropped instead of leaking to your ISP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protocols worth knowing
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Protocol&lt;/th&gt;
&lt;th&gt;Crypto&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;th&gt;Detectable?&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WireGuard&lt;/td&gt;
&lt;td&gt;ChaCha20-Poly1305, Curve25519&lt;/td&gt;
&lt;td&gt;Fastest&lt;/td&gt;
&lt;td&gt;Yes (trivially)&lt;/td&gt;
&lt;td&gt;Modern default. Tiny codebase (~4k LOC).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenVPN (UDP)&lt;/td&gt;
&lt;td&gt;AES-GCM over TLS&lt;/td&gt;
&lt;td&gt;Slower&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Mature, configurable, heavier.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IKEv2/IPsec&lt;/td&gt;
&lt;td&gt;AES, varies&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Native on iOS/macOS/Windows. Survives network changes well.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shadowsocks&lt;/td&gt;
&lt;td&gt;ChaCha20/AES&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Hard&lt;/td&gt;
&lt;td&gt;Designed for censorship circumvention, not privacy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AmneziaWG&lt;/td&gt;
&lt;td&gt;WG + obfuscation&lt;/td&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;Hard&lt;/td&gt;
&lt;td&gt;WireGuard with traffic shaping to defeat DPI.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If your threat model is "casual privacy on untrusted Wi-Fi," WireGuard is the right answer. If it's "my network actively blocks VPN protocols," you need obfuscation.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does a VPN make you anonymous?&lt;/strong&gt;&lt;br&gt;
No. It breaks the IP-to-identity link at the network layer. It doesn't touch application-layer identity — cookies, logged-in sessions, fingerprints. Real anonymity is a Tor problem, not a VPN problem. &lt;a href="https://www.torproject.org/" rel="noopener noreferrer"&gt;torproject.org&lt;/a&gt; is the reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-hosted VPN on a VPS — good idea?&lt;/strong&gt;&lt;br&gt;
For privacy from your ISP, sure. For privacy in general, no — you now have a single static IP tied to your payment method on the VPS provider. You've just moved the trust boundary from the ISP to Hetzner or DigitalOcean.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is the VPN the weak link or the browser?&lt;/strong&gt;&lt;br&gt;
The browser. Fingerprinting and logged-in session tracking bypass the VPN entirely. Fix the browser first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does HTTPS make VPNs redundant?&lt;/strong&gt;&lt;br&gt;
No. HTTPS protects content but leaks SNI, destination IP, and timing. A VPN covers those. They solve different problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WireGuard vs OpenVPN — which should I run?&lt;/strong&gt;&lt;br&gt;
WireGuard unless you have a specific reason not to. Smaller attack surface, faster, modern crypto. OpenVPN wins on configurability and firewall traversal (TCP/443).&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom line
&lt;/h2&gt;

&lt;p&gt;A VPN is a Layer 3 privacy tool with a narrow, real, measurable scope. Map it against your actual threat model, don't buy the "military-grade encryption protects you from hackers" pitch, and always test for leaks after config changes.&lt;/p&gt;

&lt;p&gt;Full long-form version on the original site with extra context: &lt;a href="https://anonymous-proxies.net/posts/what-does-a-vpn-protect-you-from/" rel="noopener noreferrer"&gt;https://anonymous-proxies.net/posts/what-does-a-vpn-protect-you-from/&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's your VPN setup? WireGuard? Tailscale? Self-hosted? Drop your config quirks in the comments — especially the kill-switch patterns, I'm collecting.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>networking</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Create your own WireGuard server in minutes</title>
      <dc:creator>Romeo Mihalcea</dc:creator>
      <pubDate>Sat, 21 Nov 2020 16:04:50 +0000</pubDate>
      <link>https://forem.com/ciokan/create-your-own-wireguard-server-in-minutes-1i4f</link>
      <guid>https://forem.com/ciokan/create-your-own-wireguard-server-in-minutes-1i4f</guid>
      <description>&lt;p&gt;With the rise in privacy concerns over tech giants battling for our data I thought it would be fit to have a small talk about creating your own VPN server. Now I know there are countless of other tutorials out there but there's never enough attention over this subject.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is WireGuard
&lt;/h3&gt;

&lt;p&gt;WireGuard is the new kid, the much needed tool in the VPN world to bring everything to the next step. It is a small, fast and effective new VPN protocol that stormed everything since its early days. Very quickly it received great reviews for its performance and it is now included in the new Kernels for Linux and Android. I don't recall ever hearing about any other library to be included so fast in the Kernel so that says a lot I guess.&lt;/p&gt;

&lt;p&gt;Wireguard is much leaner and faster when compared with other protocols and this makes it the preferred choice for many. How much faster? You can read our &lt;a href="https://nologs-vpn.com/wireguard-versus-openvpn"&gt;Wireguard vs OpenVPN&lt;/a&gt; article to see a comparison of the two.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much does it cost to own my VPN server
&lt;/h3&gt;

&lt;p&gt;Not much at all - with as much as $5 you can get a good VPS that can host a VPN server which handles the traffic for your entire family without breaking a sweat. Creating a server used to be a challenge but now, you can do it in 2 minutes. I suggest having a look at Digitalocean, Linode, Hetzner Cloud and others alike. Plenty of options.&lt;/p&gt;

&lt;h3&gt;
  
  
  My own server vs a VPN plan
&lt;/h3&gt;

&lt;p&gt;Simply because we cannot trust anybody. Most of the VPN providers have to abide the law which in many cases imposes that logs are kept and offered to gov. institutions for analyzing. We're trying to avoid being processed and analysed at every move so, sending our entire data stream to a VPN provider is nothing more than just adding an extra hop in the same chain.&lt;/p&gt;

&lt;p&gt;Having your own VPN server will break this chain and put a stop to the leak of data that we experience with ISPs or VPN providers and the process is simple. You can either let others &lt;a href="https://nologs-vpn.com"&gt;create a secure VPN server&lt;/a&gt; for you or build it yourself following guides like this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create a WireGuard server
&lt;/h2&gt;

&lt;p&gt;First of all, WireGuard does not have the notion of "servers". Everything is a &lt;code&gt;peer&lt;/code&gt; and peers are connected with one another. The config files consist of 2 parts: an &lt;code&gt;[Interface]&lt;/code&gt; which addresses the local instructions and multiple &lt;code&gt;[Peer]&lt;/code&gt; sections which define remote connections.&lt;/p&gt;

&lt;h3&gt;
  
  
  What operating system to use?
&lt;/h3&gt;

&lt;p&gt;I recommend Debian, the latest you can find with the selected provider. I will use Debian 10 (Buster) for this tutorial.&lt;/p&gt;

&lt;p&gt;The first thing to do is to go ahead and add the Wireguard release channel to your sources list. The sources are like search channels for software and, without them, your operating system cannot find anything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"echo 'deb http://deb.debian.org/debian/ unstable main' &amp;gt;&amp;gt; /etc/apt/sources.list.d/unstable.list"&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"printf 'Package: *&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Pin: release a=unstable&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Pin-Priority: 90&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;' &amp;gt;&amp;gt; /etc/apt/preferences.d/limit-unstable"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now issue an &lt;code&gt;apt update&lt;/code&gt; command to re-fetch the sources and we should be able to install Wireguard with &lt;code&gt;apt install wireguard&lt;/code&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  [SERVER] Create your keys
&lt;/h3&gt;

&lt;p&gt;Peers connect via IP addresses but they have to authenticate before a connection can be established. Keys come in pairs (public and private) and each peer must know the other peers beforehand which means writing down to the config file the public key for each peer.&lt;/p&gt;

&lt;p&gt;With the install of Wireguard we now have access to the &lt;code&gt;wg&lt;/code&gt; and &lt;code&gt;wg-quick&lt;/code&gt; commands which allows us to create our keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;umask &lt;/span&gt;077 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; wg genkey &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; wg-private.key&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;wg pubkey &amp;lt; wg-private.key &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; wg-public.key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you run &lt;code&gt;ls -la&lt;/code&gt; you will see the keys have been created. You can also run &lt;code&gt;cat wg-private.key&lt;/code&gt; to view the contents of each file.&lt;/p&gt;

&lt;h3&gt;
  
  
  [SERVER] Create the config file
&lt;/h3&gt;

&lt;p&gt;Now that we have the keys we are almost done setting up the server. We have to create the config file and bring up the VPN interface that will listen on the selected port.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/wireguard/wg0.conf&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = server+private+key+here
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The only thing you have to change here is the &lt;code&gt;eth0&lt;/code&gt; interface name. On some systems it may have a different name. To get yours you can execute this handy command: &lt;code&gt;route | grep '^default' | grep -o '[^ ]*$'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We have created the server config but haven't added any peers yet. That's because we need to generate the keys for the client now so we can add them to our peers list. The server will listen on the private address &lt;code&gt;10.10.0.1&lt;/code&gt;. You may be wondering what is the purpose of the public key because we haven't used it yet. It will be added to the client config in our next steps.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;PostUp&lt;/code&gt; and &lt;code&gt;PostDown&lt;/code&gt; instructions are executed when the server is started and stopped and they enable IP forwarding so that you can exchange packets with your server. IP forwarding must also be enabled on the server by editing the &lt;code&gt;*/etc/sysctl.conf&lt;/code&gt; file and adding:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  [CLIENT] Create keys
&lt;/h3&gt;

&lt;p&gt;We also need the client keys so we can add authenticated peers to the server. Repeat the steps from the server in order to generate keys but this time on the local machine. If you're on windows or MacOS you can download the Wireguard gui package and copy the keys from there.&lt;/p&gt;

&lt;h3&gt;
  
  
  [CLIENT] Create config file
&lt;/h3&gt;

&lt;p&gt;Once you have the keys we can create the local configuration file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/wireguard/wg0.conf&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Interface]
Address = 10.10.10.2/24
PrivateKey = client+private+key+here
DNS = 10.10.10.1

[Peer]
AllowedIPs = 0.0.0.0/0
Endpoint = server_ip_address:51820
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our client config is done. It has a local description (&lt;code&gt;[Interface]&lt;/code&gt;), it will be allocated the &lt;code&gt;10.10.10.2&lt;/code&gt; address, that's the next address after the server and it also forwards dns queries to the server.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;[Peer]&lt;/code&gt; in this case is the server so, before attempting a connection, we also add a peer to the server that contains our public key otherwise our connection will be refused.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/wireguard/wg0.conf&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Interface]
Address = 10.10.10.1/24
ListenPort = 51820
PrivateKey = server+private+key+here

[Peer]
PublicKey = client+public+key+here
AllowedIPs = 10.10.10.2/32
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Time to bring up the server: &lt;code&gt;wg-quick up wg0&lt;/code&gt;. &lt;br&gt;
To bring it up automatically after restart (at boot): &lt;code&gt;systemctl enable wg-quick@wg0&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Connect to the server
&lt;/h3&gt;

&lt;p&gt;With all peers defined and keys ready to be exchanged it is now time to connect to our server. Remember that wireguard is stateless and it will probably report a successful connection even though it is not. You should test your IP address, dns leaks and other stuff to verify the connection was made.&lt;/p&gt;

</description>
      <category>wireguard</category>
      <category>vpn</category>
      <category>privacy</category>
    </item>
    <item>
      <title>CNAME cloaking or how are we being tracked even with ad-blockers installed</title>
      <dc:creator>Romeo Mihalcea</dc:creator>
      <pubDate>Mon, 09 Mar 2020 15:47:24 +0000</pubDate>
      <link>https://forem.com/dnsadblock/cname-cloaking-or-how-are-we-being-tracked-even-with-ad-blockers-installed-5ok</link>
      <guid>https://forem.com/dnsadblock/cname-cloaking-or-how-are-we-being-tracked-even-with-ad-blockers-installed-5ok</guid>
      <description>&lt;p&gt;For many years we relied on regular ad blockers to clean our screen from ads, trackers and other junk but there's a way that these websites use to bypass our efforts and it works very well.&lt;/p&gt;

&lt;p&gt;Regular ad blockers intercept your browser's requests and analyze each one to see if there are matching rules against it. The flaw is in this technique because the extension only has access to the first party (the requested url) without being able to monitor what is taking place once a request does not match any of its rules - at the DNS level for example.&lt;/p&gt;

&lt;p&gt;In this post I'm going to explain how one can mask/cloak a tracking domain behind some DNS trickery, bypassing browser based ad-blockers. It takes only a few minutes to buy a new domain and setup a &lt;code&gt;CNAME&lt;/code&gt; alias to achieve this masking technique so it is very easy.&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;CNAME&lt;/code&gt; is a domain that points to another domain, an alias. You can think of it as a permanent redirect but executed at the DNS level. Many tools rely on CNAMEs to serve content and I'm going to pick Netlify as an example here. Our blog is hosted on Netlify. Each deployed website is assigned a unique subdomain in the form of &lt;code&gt;unique-subdomain.netlify.com&lt;/code&gt;. In our case it is &lt;code&gt;festive-nobel-876c06.netlify.com&lt;/code&gt; and you can try it in your browser to see it works.&lt;/p&gt;

&lt;p&gt;If you want to use your own domain (of course you are) for this address (&lt;code&gt;blog.dnsadblock.com&lt;/code&gt;) you need to point it to &lt;code&gt;festive-nobel-876c06.netlify.com&lt;/code&gt; using a CNAME.&lt;/p&gt;

&lt;p&gt;Presuming that &lt;code&gt;festive-nobel-876c06.netlify.com&lt;/code&gt; is serving some tracking scripts and it is being blocked by ad blocking extensions I can simply alias a new domain to it and import the script using it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;script src="https://blog.dnsadblock.com/itrackyou.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Since &lt;code&gt;festive-nobel-876c06.netlify.com&lt;/code&gt; appears only after the request was allowed (when the DNS is being resolved) it will pass without issues:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$: dig blog.dnsadblock.com

;; ANSWER SECTION:
blog.dnsadblock.com.    103 IN  CNAME   festive-nobel-876c06.netlify.com.
festive-nobel-876c06.netlify.com. 20 IN A   157.230.120.63
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So how can we combat these techniques? Are ad-blockers dead? Not really. I know they are trying hard to kill or limit ad-blockers but they are still effective. The solution is to combine multiple tools. Our &lt;a href="https://dnsadblock.com"&gt;ad blocking DNS servers&lt;/a&gt; are monitoring and testing rules against CNAME aliases as well so this technique won't fly.&lt;/p&gt;

&lt;p&gt;If you are curious to see just how much tracking takes place on a regular machine have a look at this screenshot. This is my computer and I'm using dnsadblock only on it. This screenshot only reflects my activity and you can also see periods of inactivity when I'm testing other DNS servers so the numbers could be higher.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DYjffAId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.dnsadblock.com/images/uploads/screenshot-dnsadblock.com-2020.03.02-19_18_47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DYjffAId--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.dnsadblock.com/images/uploads/screenshot-dnsadblock.com-2020.03.02-19_18_47.png" alt="dnsadblock blocked requests"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>adblock</category>
      <category>dnsadblock</category>
      <category>blockads</category>
      <category>blocktracking</category>
    </item>
    <item>
      <title>Deploy a blazing-fast, feature-rich and free to use website with a blog in under 10 minutes</title>
      <dc:creator>Romeo Mihalcea</dc:creator>
      <pubDate>Thu, 03 Jan 2019 02:39:10 +0000</pubDate>
      <link>https://forem.com/ciokan/deploy-a-blazing-fast-feature-rich-and-free-to-use-website-with-a-blog-in-under-10-minutes-1e9a</link>
      <guid>https://forem.com/ciokan/deploy-a-blazing-fast-feature-rich-and-free-to-use-website-with-a-blog-in-under-10-minutes-1e9a</guid>
      <description>&lt;p&gt;2018 was a great year for me as a developer. I managed to put together an open-source project (still under heavy development) that was sitting on the back of my mind for many years.&lt;/p&gt;

&lt;p&gt;I don't know about you but, as a programmer that is comfortable with both the backend and frontend, I'm always testing new ideas, apps and websites. Doing so for years and years I noticed a repetitive task that was getting quite annoying. Each of my projects required a presentation website with a blog where I get to talk about it in more detail.&lt;/p&gt;

&lt;p&gt;That means at least one web server with a database attached. It's not hard but takes a lot of time that I would rather spend on something else instead so I stopped and brainstormed my next project that would end this repetitive cycle of costly deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every good house starts with a strong foundation
&lt;/h2&gt;

&lt;p&gt;My framework of choice was Gatsby. It had most of the things that I would consider to be required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it has to compile to static files&lt;/li&gt;
&lt;li&gt;easy to deploy to a CDN such as Netlify&lt;/li&gt;
&lt;li&gt;image optimization in place&lt;/li&gt;
&lt;li&gt;vibrant community&lt;/li&gt;
&lt;li&gt;hackable because I like to get my hands dirty&lt;/li&gt;
&lt;li&gt;extensible via plugins&lt;/li&gt;
&lt;li&gt;uses GraphQl to fetch data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6mBtkPus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/razqzt3omu8kac5egf8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6mBtkPus--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/razqzt3omu8kac5egf8v.png" alt="Fast deployments"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    query($slug: String, $tags: [String], $categories: [String]) {
        post: markdownRemark(fields: { slug: { eq: $slug } }) {
            ...postFragment
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The result had to be something oriented towards programmers. I hate wysiwyg editors with a passion because there are many constraints and the output never seems to be predictable. I wanted something where I put the power of the framework at reach for both the developer and content editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E3rydTqD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/92bys8ygfhfofvpgtt2n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E3rydTqD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/92bys8ygfhfofvpgtt2n.png" alt="Power to the publishers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Developers and Publishers express without barriers
&lt;/h2&gt;

&lt;p&gt;Slowly but surely &lt;a href="https://www.qards.io"&gt;Qards&lt;/a&gt; took shape. My goal was to give more power to the writer by using, what I like to call, "smart cards". The content editor should be able to create interactive presentations using widgets that respond to events, to dates, to browser types, regions or any other external factors that can be made available to a frontend engineer. Some of those widgets include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automatically generated toc (table of contents) (developed)&lt;/li&gt;
&lt;li&gt;charts (planned)&lt;/li&gt;
&lt;li&gt;accordions (developed)&lt;/li&gt;
&lt;li&gt;images (developed)&lt;/li&gt;
&lt;li&gt;galleries (developed)&lt;/li&gt;
&lt;li&gt;video embeds (developed)&lt;/li&gt;
&lt;li&gt;audio playlist (developed)&lt;/li&gt;
&lt;li&gt;code blocks (developed)&lt;/li&gt;
&lt;li&gt;callouts (developed)&lt;/li&gt;
&lt;li&gt;countdowns (developed)&lt;/li&gt;
&lt;li&gt;grid lists (planned)&lt;/li&gt;
&lt;li&gt;references to other posts (developed)&lt;/li&gt;
&lt;li&gt;etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kLpVcLJy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cqgjevdoxtjy077nsyva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kLpVcLJy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cqgjevdoxtjy077nsyva.png" alt="Smart cards"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One other must-have for such a platform was the ability to add custom widgets via an internal plugin system (still under development/planned). The developer creates directives and data requirements which are interpreted by the admin interface (Netlify CMS) where the content publisher is able to create those experiences. That's right, let's navigate from simple posts to "experiences" for our visitors. We're all affected by bounce rates that connect directly with dull interfaces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let's get the word out
&lt;/h2&gt;

&lt;p&gt;One month later into the project I had a clear path and an idea that was no longer just a blurry shape. I like to test such things before an official launch by putting it out there on ProductHunt and other similar platforms.&lt;/p&gt;

&lt;p&gt;Qards was quickly picked-up and got to 2nd place for that day which was not bad at all for something which was not even in an alpha stage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--813XXIZI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vmsnn5fbzqsm5axbshdz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--813XXIZI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/vmsnn5fbzqsm5axbshdz.png" alt="Qards on ProductHunt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The feedback was more than helpful and my mailing list reached 2,000+ in one night so it was a productive experience for me. That's everything I needed to validate my project. I was going to use it anyway but I wasn't sure if I could make something for the general public out of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  More than just a blog
&lt;/h2&gt;

&lt;p&gt;I may be advertising a blog but Qards is more than that. Being powered by Gatsby, it can be your next big project...with a blog. You simply get the added benefit of not having to worry about content any more.&lt;/p&gt;

&lt;h2&gt;
  
  
  In summary
&lt;/h2&gt;

&lt;p&gt;In summary I would like to recap everything that Qards is and does so here's a list of all the parts that make this project work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;powered by Gatsby and Netlify CMS, comes with all benefits&lt;/li&gt;
&lt;li&gt;free to use and free to deploy to Netlify or other CNDs (free SSL as well)&lt;/li&gt;
&lt;li&gt;rich, interactive widgets to keep your readers engaged&lt;/li&gt;
&lt;li&gt;more power to the content editors (think of it like Bootstrap for publishers)&lt;/li&gt;
&lt;li&gt;compiles to static files&lt;/li&gt;
&lt;li&gt;offline support&lt;/li&gt;
&lt;li&gt;pluggable&lt;/li&gt;
&lt;li&gt;extensible&lt;/li&gt;
&lt;li&gt;hackable&lt;/li&gt;
&lt;li&gt;free to use and develop with 0 restrictions

&lt;ul&gt;
&lt;li&gt;code/content sits on Github or Gitlab&lt;/li&gt;
&lt;li&gt;static files are served by any CDN you can think of&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;open source&lt;/li&gt;
&lt;li&gt;tested (work in progress)&lt;/li&gt;
&lt;li&gt;developer oriented&lt;/li&gt;
&lt;li&gt;developed in Typescript&lt;/li&gt;
&lt;li&gt;blazing fast&lt;/li&gt;
&lt;li&gt;appealing default design&lt;/li&gt;
&lt;li&gt;themable&lt;/li&gt;
&lt;li&gt;deployable and ready to publish in under 10 minutes&lt;/li&gt;
&lt;li&gt;markdown content&lt;/li&gt;
&lt;li&gt;progressive loading, image optimization and lazy loading of content&lt;/li&gt;
&lt;li&gt;un-hackable, always on production deployments&lt;/li&gt;
&lt;li&gt;awesome performance index&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I managed to spark your interest please have a look at &lt;a href="https://www.qards.io/list-of-supported-cards/"&gt;Some of the supported cards&lt;/a&gt; to get a feel of what this project can do for you.&lt;/p&gt;

&lt;p&gt;Also, it's still an early phase so AMA and feel free to suggest new things.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>gatsby</category>
      <category>react</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
