首页 > 代码库 > iptables 之 NAT 中的DNAT 介

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

 

iptables 之 NAT 中的DNAT 介