Chinaunix首页 | 论坛 | 博客
  • 博客访问: 976825
  • 博文数量: 109
  • 博客积分: 554
  • 博客等级: 中士
  • 技术积分: 2577
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-04 12:49
文章分类

全部博文(109)

文章存档

2019年(5)

2016年(7)

2015年(9)

2014年(1)

2013年(71)

2012年(16)

分类: LINUX

2015-05-13 22:05:38

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



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