Chinaunix首页 | 论坛 | 博客
  • 博客访问: 200566
  • 博文数量: 40
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-31 10:34
文章分类
文章存档

2019年(2)

2017年(14)

2016年(8)

2015年(10)

2014年(6)

我的朋友

分类: LINUX

2015-05-16 15:38:59

原文地址:iptables 实践 作者:enzo26

iproute的功能是对ip数据报文的来源地址,目的地址进行分析,必要的时候可以让不同的数据报文走不同的路由; 
iptables是一个包伪装的实现,其中包括源地址伪装,目的地址伪装,端口转发等功能

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包。这通常就是路由器所要实现的功能。

iptables SNAT和DNAT的理解

 

图中正菱形的区域是对数据包进行判定转发的地方。在这里,系统会根据IP数据包中的destination ip address中的IP地址对数据包进行分发。

如果destination ip address是本机地址,数据将会被转交给INPUT链。如果不是本机地址,则要交给FORWARD链检测。

 

PREROUTING是路由前匹配的链,PREROUTING一般用于做目的地址转换(DNAT)

把访问202.103.96.112的访问转发到192.168.0.112

iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112

POSTROUTING是路由后匹配的链,POSTROUTING一般用于做源地址转换(SNAT)

流出本机的数据的source ip address修改成58.20.51.66

iptables -t nat -A POSTROUTING -s 192.168.0.112 -j SNAT --to-source 58.20.51.66

# 允许IP转发

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

 

设置双网卡静态路由表


route add -net 192.168.101.0 netmask 255.255.255.0 dev eth0

route add -net 192.168.100.0 netmask 255.255.255.0 dev eth1

#eth0 设置多个ip地址

ifconfig eth0 add "内网网卡IP" netmask "内网掩码"

#将内网数据转发到外网

iptables -t nat -A PREROUTING -d "内网网卡IP" -j DNAT --to "外网目的主机IP"

iptables -t nat -A POSTROUTING -s "内网网段或内网IP" -o eth0 -j SNAT --to "NAT IP"(访问外网时将源IP改成NAT地址)

 


查看iptable
//--line-number可以显示规则序号
查看filter
iptables -L -n --line-number


查看nat
iptables -t nat -vnL POSTROUTING --line-number


删除iptables规则
iptables -D INPUT 3  //删除input的第3条规则
iptables -F INPUT   //清空 filter表INPUT所有规则
//清空所有规则
iptables -F    
iptables -t nat -F POSTROUTING   //清空nat表POSTROUTING所有规则
iptables -t nat -D POSTROUTING 1  //删除nat表中postrouting的第一条规则


iptables -t nat -A POSTROUTING -s 192.168.101.0/24 -o eth0 -j SNAT --to 192.168.100.124
#等价形式
iptables -t nat -A POSTROUTING -s 192.168.101.0/24 -o eth0 -j MASQUERADE



阅读(1819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~