伪装技术简易指南

John Tapsell

Thomas Spellman

Matthias Grimm

修订历史
修订版 0.092004-07-21修订者: ts
修订版 0.082002-07-11修订者: jpt
修订版 0.072002-02-27修订者: jpt
修订版 0.062001-09-08修订者: jpt
修订版 0.052001-09-07修订者: jpt
修订版 0.042001-09-01修订者: jpt
修订版 0.032001-07-06修订者: jpt

所有作者都在 irc.opensource.net 的 #debian 频道

John Tapsell (JohnFlux) 是官方维护者。

如有任何疑问、批评、反馈或约会等,请给我 (John Tapsell) 发邮件。

无耻地借鉴了 David Ranch 的工作 -.

本文档并非 IP 伪装 HOWTO 的替代品,而是对其进行补充,两者应并排阅读。本文档不包含其他 HOWTO 已涵盖的内容,也不解释所有内容的含义或目的。有关更好的指南,请参阅 http://ipmasq.cjb.net 和标准的 Masq-HOWTO。

本文档描述了如何在给定的 Linux 主机上启用 Linux IP 伪装功能。IP Masq 是一种网络地址转换 (NAT) 形式,它允许没有一个或多个已注册 Internet IP 地址的内部联网计算机通过您的 Linux 盒子的单个 Internet IP 地址与 Internet 通信。

本文档受 GNU 自由文档许可证保护

https://gnu.ac.cn/copyleft/fdl.html


目录
1. 简介
2. 摘要:(我喜欢先写摘要)
3. 更深入的版本
4. 安装后说明
5. 常见问题解答 - 常见问题^H^H^H^H^H^H

1. 简介

本文档有意简短扼要。

如果您有一个想要连接到外部的网络


2. 摘要:(我喜欢先写摘要)

假设外部互联网网卡是 eth0,外部 IP 是 123.12.23.43,内部网卡是 eth1,那么

$> modprobe ipt_MASQUERADE # If this fails, try continuing anyway
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43
$> echo 1 > /proc/sys/net/ipv4/ip_forward

或者对于拨号连接

$> modprobe ipt_MASQUERADE # If this fails, try continuing anyway
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$> echo 1 > /proc/sys/net/ipv4/ip_forward

然后进行安全设置

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT
$> iptables -P INPUT DROP   #only if the first two are succesful
$> iptables -A FORWARD -i eth0 -o eth0 -j REJECT

或者对于拨号连接(内部网卡为 eth0)

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT
$> iptables -P INPUT DROP   #only if the first two are succesful
$> iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT

就是这样!要查看规则,请执行“iptables -t nat -L


3. 更深入的版本

编译内核:(使用 2.4.x 或更高版本的内核)

您需要在内核中获得以下支持

首先,如果 iptable 和 masq 模块未编译到内核中且未安装,但作为模块存在,则我们需要安装它们。如果您 insmod ipt_MASQUERADE,它将加载 ip_tables、ip_conntrack 和 iptable_nat。

$> modprobe ipt_MASQERADE

现在,无论是您的 Intranet 很大,还是您只是想让两三台机器在互联网上工作 - 这两种方式都没有太大区别。

好的,我假设您没有其他规则,所以执行

$> iptables -F; iptables -t nat -F; iptables -t mangle -F

如果您收到错误提示找不到 iptables,请找到并安装它。如果提示没有名为“nat”的表,请重新编译具有 nat 支持的内核。如果提示没有名为“mangle”的表,请不要担心,MASQ'ing 不需要它。如果提示 iptables 与您的内核不兼容,请获取 > 2.4 并使用 iptables 支持编译它。

那么,如果您有静态 IP,请执行(例如,网卡未使用 DHCP)

$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43

或者对于动态 IP(例如,调制解调器 - 您必须先拨打电话号码)

$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

最后,告诉内核是的,您真的想开始转发数据包:(每个重启只需要执行一次 - 但多做几次也没坏处)

$> echo 1 > /proc/sys/net/ipv4/ip_forward

一旦您检查了这一切都正常工作(请参阅安装后说明),只允许来自内部网络的伪装 - 您毕竟不想允许互联网上的人使用它:)

首先,允许任何现有连接或任何相关连接(例如,ftp 服务器连接回您)

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

如果这给出了错误,那么您很可能在内核中没有状态跟踪 - 请重新编译。然后只允许来自我们的内网(本地/内部网络)的新连接。将 ppp0 替换为 eth0 或任何您的外部设备。(! 表示除了...之外的任何事物)

$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT

现在拒绝其他一切

$> iptables -P INPUT DROP   #only if the first two are succesful

如果前两个规则中的任何一个失败,那么最后这个规则将阻止伪装完全工作。要撤消此规则,请执行“iptables -P INPUT ACCEPT”。


4. 安装后说明

现在应该一切正常了。别忘了

要测试它

其中 eth0 是外部互联网网卡,123.12.23.43 是该机器的外部 IP。


5. 常见问题解答 - 常见问题^H^H^H^H^H^H