iptables 之 NAT 中的DNAT 介
iptables 有地址转换的NAT功能
1 常用在 SNAT 将私有地址转换为公有地址 进行私有内的地址可以顺利访问外网
2 DNAT呢?
假设一个这样的场景,私有网络有两个服务器很繁忙,并且没有使用公网地址,现在需要对外提供服务!此时如何让外网的Client 访问到内网的WEB服务和FTP等服务?
答案: iptables 的DNAT功能,进行目标地址转换
模拟网络场景
192.168.100.0/24 私有
192.168.204.0/24 公网
web 服务器 192.168.100.10 ---- fireware 192.168.100.11 192.168.204.11 --- Client 192.168.204.10
操作
web 上的操作 准备http服务器
[root@web2 ~]# netstat -tulnp | grep 80
tcp 0 0 :::80 :::* LISTEN 5595/httpd
[root@web2 ~]# echo "Private NET 192.168.100.10" > /var/www/html/index.html
Client 使用一台WinXP 服务器进行模拟
没有DNAT前测试访问:
Firewall 上iptables 规则
[root@Firewall ~]# iptables -t nat -A PREROUTING -d 192.168.204.11 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10
winXP上进行再测试
表明 访问192.168.204.11 的时候,访问到了私网内的WEB 服务192.168.100.10 上
[root@Firewall ~]# tcpdump -vv -nn tcp port 80 进行排错测试
root@web2 ~]# tail -f /var/log/httpd/access_log
192.168.204.10 - - [30/Nov/2014:04:13:53 -0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
192.168.204.10 - - [30/Nov/2014:04:13:53 -0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
192.168.204.10 - - [30/Nov/2014:04:13:53 -0800] "GET / HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
注:
假设web监听的不是80端口而是8080 端口则 iptables 规则应该DNAT 应该转换到 私有地址的8080端口上
[root@Firewall ~]# iptables -t nat -A PREROUTING -d 192.168.204.11 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:8080