码迷,mamicode.com
首页 > 系统相关 > 详细

linux基础之iptables (二) SNAT和DNAT

时间:2019-05-09 19:43:51      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:一个   forward   代理   html   _for   for   安全性   eth0   主机   

iptables要实现内网和外网通信,有两种方式:

  nat: Network Address Translation,安全性,网络层+传输层
  proxy: 代理,应用层

nat: 

SNAT: 只修改请求报文的源地址
DNAT:只修改请求报文的目标地址

nat表:

PREROUTTING: DNAT
OUTPUT
POSTROUTING: SNAT

实例:

以三台电脑搭建环境,其中一台作为外网主机,一台作为网关,一台作为内网主机

1. 以192.168.1.4这台电脑作为连接内网和外网的接口,eth0作为外网接口,ip为192.168.1.4;添加一块自定义网卡eth1,ip设置为192.168.20.1,作内网的网关用
    # ifconfig eth1 192.168.20.1/24 up
2. 以原ip为192.168.1.3这台电脑作为内网主机,网卡设置为自定义,ip设置为192.168.20.2,实现内网能够和网关192.168.20.1通信     # ifconfig eth0 192.168.20.1 up
  添加默认网关:
    # route add default gw 192.168.20.1

3. 以192.168.1.5 这台电脑作为外网主机使用 
3. 打开192.168.1.4这台电脑的网卡的转发功能
    以CentOS6为例:
          # vim /etc/sysctl.conf
            net.ipv4.ip_forward = 1 
          # sysctl -p  //使之生效 
    验证: # cat /proc/sys/net/ipv4/ip_forward

接下来做一个基于DNAT的方式进行源地址转换:

1. 首先提供环境: 让外网主机提供web服务,
  # vim /var/www/html/index.html 
示例:
<html> <title>Test Page</title> <body> <h1>Welcome to Alen</h1> <p>hello</p> </body> <html>

2. 现在外网主机是ping不同内网主机的,给外网主机增加网络路由

# route add -net 192.168.20.0/24 gw 192.168.1.4  //192.168.20网络的报文都转发到192.168.1.4这台主机上

3. 抓包测试:

外网主机: tcpdump -i eth0 host 192.168.1.5
内网主机: curl http://192.168.1.5
外网主机成功抓包: 说明内网主机可以和外网主机通信

4.现在删掉刚才添加的外网主机路由:

# route del -net 192.168.20.0/24

5. 写iptables规则实现snat转发

# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 ! -d 192.168.20.0/24 -j SNAT --to-source 192.168.1.4
或者用MASQUERADE机制:
# iptables -t nat -A POSTROUTING -s 192.168.20.0/24 ! -d 192.168.20.0/24 -j MASQUERADE

6. 写IPtables规则实现dnat转发

# iptables -t nat -A PREROUTING -d 192.168.20.0/24 -p tcp --dport 80 -j DNAT --to-destination 192.168.20.2
或者用MASQUERADE机制:
# iptables -t nat -A PREROUTING -d 192.168.20.0/24 -p tcp --dport 80 -j MASQUERADE

再次测试,内网和外网可以通信

 

linux基础之iptables (二) SNAT和DNAT

标签:一个   forward   代理   html   _for   for   安全性   eth0   主机   

原文地址:https://www.cnblogs.com/ckh2014/p/10840435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!