Iptables 预路由和 IP 转发

Iptables 预路由和 IP 转发

我有一台 Linux 机器,用作 Win XP 机器的网关。两者都在虚拟机中,用于测试目的。现在我想通过转发 IP 地址来欺骗 Win XP 用户(我):我想更改目标 IP 地址。

例如,我想访问 1.1.1.1,但 Linux 网关将其更改为 2.2.2.2,因此,如果我期望访问 1.1.1.1 的网页,我将获得更改后的网页,即 2.2.2.2 的网页。例如,我想访问 Facebook,但被迫访问 Google 主页。

我该怎么做?使用预路由吗?因为我试了很多次,但都没成功 :(

答案1

仅使用 iptables 无法可靠地工作,因为 HTTP 请求会发送 Host: 标头。而且 Google 不太可能知道如何为 Host:facebook.com 提供页面。安装适当的代理软件,例如 squid。

答案2

基本上,你必须做的是:

  1. 配置 Linux 机器作为路由器

  2. 将 Windows 系统的默认网关更改为指向 Linux 系统的 IP

  3. 进行 DNAT,例如:

    iptables -t nat -A PREROUTING -i $INCOMING_INTERFACE -d $DEST_IP -j DNAT --to $NEW_DEST_IP
    
  4. 也可以进行 SNAT,例如

    iptables -t nat -A POSTROUTING -o $OUTGOING_INTERFACE -j SNAT --to $OUTGOING_IP_ADDRESS_OF_ROUTER
    
  5. 确保iptables 规则/策略丢弃你的流量

相关内容