python构建虚拟网络

实现虚拟网络有如下形式!

  • DNS 拦截:拦截所有DNS请求且返回认证主机IP地址(设置了强制主页),这样用户访问任何网站都会看到同一个强制主页。
  • HTTP 重定向:利用HTTP 重定向到认证主机,如此一来,用户的发出的任何HTTP请求都会得到重定向后的强制主页。当用户通过认证后,便不再重定向用户请求。
  • IP跳转:把所有IP包里的目标地址改为认证主机地址,在认证主机上进行 404 跳转,当然是跳转到强制主页了。
  • 内核层劫持:当网关收到一个访问外网地址(80端口)的 TCP SYN请求包后,立即伪造一个来自外网地址的 TCP ACK 包。客户端收到此伪造的响应后会误认为外网主机可以连接便再次发送 ACK ,此时 TCP 握手成功。客户端发起请求,网关再次劫持后回应 ACK + PUSH 包,其中就包含强制主页.