I have a small amount of data I want to send at regular intervals, such as from an IoT device. How would I design a network protocol or use existing protocols in such a way that my ISP cannot block these packets? (For example due to political or commercial censorship.) Assume that the device is behind a typical home or office router utilizing NAT.

If it is not possible to design an unblockable protocol, what steps can minimize the likelihood of blocking?

So far I imagine the following:

  1. Packets can be blocked by origin
  2. Packets can be blocked by destination host or port
  3. Packets can be blocked by content

Is number 1 solved by NAT? I.e. would the ISP have to block everything coming from my single IP address in order to block this device?

Number 3 is presumably not an issue, as I could hash or encrypt the packets, add padding bytes, etc. to disguise them.

But what about number 2? This seems like the stickiest issue. It needs to know where to send its packets, which inevitably seems like needing to know hard-coded IP addresses or making a DNS lookup, either of which could be easily blocked. The device could use some sort of P2P protocol, but that would presumably need to fall back to hard coded nodes to bootstrap itself.

I suppose one "solution" would be to just perform a scan of the entire IPv4 address space and look for a particular signature matching the desired host. Is there a cleverer way?

  • can you utilize a vpn? that should stop destination sniffing... – dandavis Feb 27 '18 at 21:12
  • 1
    What you have described is identical to botnet detection evasion techniques - why not look to how botnets solve this problem? – schroeder Feb 27 '18 at 22:17
  • Use DNS tunneling. Your ISP can block whatever they want, but they're not providing you much of a service if they're blocking DNS. – Ivan Feb 28 '18 at 0:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.