POSTROUTING 链 是将本地ip地址伪装成公网ip地址
要让局域网的机器上网要允许带有内部 IP 地址的 LAN 节点和外部的公共网络通信,需要配置防火墙的 IP 伪装(IP masquerading)。这会把来自 LAN 节点的请求都伪装成防火墙的外部设备(在这个例子中是 eth0)的 IP 地址。该规则使用 NAT 分组匹配表(-t nat),并在防火墙的外部联网设备(-o eth0)上为 NAT 指定内建的 POSTROUTING 链(-A POSTROUTING)。POSTROUTING 允许分组在离开防火墙的外部设备时被改变。-j MASQUERADE 目标被用来使用防火墙/网关的外部 IP 地址来掩盖节点的内部 IP 地址。 该规则使用 NAT 分组匹配表(-t nat),并在防火墙的外部联网设备(-o eth0)上为 NAT 指定内建的 POSTROUTING 链(-A POSTROUTING)。POSTROUTING 允许分组在离开防火墙的外部设备时被改变。-j MASQUERADE 目标被用来使用防火墙/网关的外部 IP 地址来掩盖节点的内部 IP 地址。
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $inet_address 公网地址
如果你想让内部网络内的某个服务器能够被外部利用,你可以使用 NAT 内 PREROUTING 链的 -j DNAT 目标来指定该向哪个目标 IP 地址以及端口转发请求连接到内部服务的分组。例如,如果你想把进入的 HTTP 请求转发到 172.31.0.23 上的专用 Apache HTTP 服务器服务器系统,运行以下命令:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 172.31.0.23:80
如果你的 FORWARD 链的默认政策是 DROP,你就必须后补一条规则来允许转发进入的 HTTP 请求,因此目标 NAT 选路才有可能。运行以下命令可以达到这个目的:
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT
下面的是用防火墙生成软件生成的
$IPT -t nat -A PREROUTING -p tcp-i $INET_IFACE --destination-port 80:80 \
-j DNAT --to-destination 10.0.0.10:80
$IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port 80:80 \
--destination $INET_ADDRESS -j DNAT --to-destination 10.0.0.10:80
这就是在访 这句话的意思应该是从内网到公网80端口的访问映射到内网的服务器地址,而不用在到公网中
这个forward链默认也是拒绝的在其中找到
# Port Forwarding is enabled, so accept forwarded traffic
$IPT -A FORWARD -p tcp -i $INET_IFACE --destination-port 80 \
--destination 10.0.0.10 -j ACCEPT
###############################################################################
#
# POSTROUTING chain
#
$IPT -t nat -A POSTROUTING -o $INET_IFACE \
-j SNAT --to-source $INET_ADDRESS 这个是我理解错误 这个做转换
$IPT -t nat -A POSTROUTING -o $LOCAL_IFACE \
-j SNAT --to-source $INET_ADDRESS 这一个选项是是访问内网的机器的时候也用公网地址
这个选项可以没必要,同时在prerouting中也同时添加一条
###############################################################################
阅读(2772) | 评论(0) | 转发(0) |