防火墙之地址转换SNAT DNAT

NAT network address translation

仅从报文请求来看,可以分为:

  SNAT 源地址转换

  DNAT 目标地址转换

  PNAT 端口转换

 

NAT server:能根据需要实现SNAT DNAT PNAT

并非是用户空间的进程完成转换功能,靠的是内核中的地址转换规则

 

私有IP客户端访问互联网的方法

SNAT 、PROXY

 

SNAT:主要用于实现内网客户端访问外部主机时使用(局域网上网用)

定义在POSTROUTING链上

  iptables -t nat -A postrouting -s 内部网络地址或主机地址 -j SNAT --to-source NAT服务器上的某外部地址

 

另外一个target

MASQUERADE地址伪装(适用于PPPOE拨号上网,假设eth1是出口)

iptables -t nat -A postrouting -s 内部网络或主机地址 -o eth1 -j MASQUERADE

 

DNAT:主要用于内部服务器被外网访问(发布服务)

定义在PREROUTING

iptables -t nat -A PREROUTING -d NAT服务器的某外部地址 -p 某协议 --dport 某端口 -j DNAT --to-destination 内网服务器地址[:port]

注意:NAT服务器需要打开数据转发

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

或者修改/etc/sysctl.conf net.ipv4.ip_forward = 1

 

实验操作

SNAT、DNAT

实验一:SNAT

规划主机A 作为SNAT server

eth0 ip地址172.20.1.10(外部地址),eth1 192.168.1.1(内部地址)

主机B当做局域网内主机

eth0 ip地址192.168.1.2 默认路由要指向192.168.1.1

SNAT server:

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.20.1.10

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

主机B ping外部的其它主机(172.20.1.20模拟互联网上的主机)

 

DNAT

在主机B(192.168.1.2) 开启httpd服务,然后用外部的其它主机访问主机A 172.20.1.10

主机A DNAT server

[root@localhost ~]# iptables -t nat -I PREROUTING -d 172.20.1.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2

出现了测试页

防火墙之地址转换SNAT DNAT_address