3.3.2. iptables 伪装
iptables 也可用于启用伪装。
• 与ufw 类似,第一步是通过编辑启用IPv4 数据包转发 /etc/sysctl.conf中 并取消注释以下行:
net.ipv4.ip_forward = 1
如果您希望启用 IPv6 转发也取消注释:
net.ipv6.conf.default.forwarding=1
• 接下来,执行 sysctl 命令以启用配置文件中的新设置:
sudo sysctl -p
• IP 伪装现在可以使用单个 iptables 规则来完成,根据您的网络配置,该规则可能略有不同:
须藤 iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
上述命令假设您的私有地址空间是 192.168.0.0/16,并且您面向 Internet 的设备是 ppp0。 语法分解如下:
• -t nat -- 规则是进入 nat 表
• -A POSTROUTING -- 规则将被附加 (-A) 到 POSTROUTING 链
• -s 192.168.0.0/16 -- 该规则适用于源自指定地址空间的流量
• -o ppp0 -- 该规则适用于计划通过指定网络设备路由的流量
• -j MASQUERADE -- 匹配此规则的流量将“跳转”(-j) 到要如上所述操作的 MASQUERADE 目标
• 此外,过滤器表(默认表,以及大多数或所有包过滤发生的地方)中的每个链都有一个默认值 政策 ACCEPT,但如果除了网关设备之外,您还要创建防火墙,您可能已将策略设置为 DROP 或 REJECT,在这种情况下,需要允许您伪装的流量通过 FORWARD 链才能使上述规则生效:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j 接受 sudo iptables -A FORWARD -d 192.168.0.0/16 -m 状态 \
--state ESTABLISHED, RELATED -i ppp0 -j 接受
上述命令将允许从本地网络到 Internet 的所有连接以及与这些连接相关的所有流量返回到启动它们的机器。
• 如果您希望在重新启动时启用伪装(您可能会这样做),请编辑 在/etc/rc.local 并添加上面使用的任何命令。 例如添加第一个没有过滤的命令:
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j 伪装