iptables配置NAT

RFC 1918 为私有网络预留出了三个IP 地址块,如下:
A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255
上述三个范围内的地址不会在因特网上被分配,局域网内部一般使用上述网段的私有地址,不要配公有地址,如果私有网络和公有网络分配了相同的ip地址,这种情况称为地址重叠,两个重叠的地址之间是不能通信的,因为他们互相认为对方的主机所在的为互联网。
    

        在早期一些专用网络中,是不和互联网相连的,但是现在又想和互联网相连,我们知道互联网公有地址是有限的,如果每台主机都申请一个公网地址,不仅费用高昂,而且造成资源的浪费,这时我们就可以使用NAT方法,使用这种方法需在路由器安装nat软件,路由器要连接一个公网的ip地址,这样局域网内的主机与外界通信都要在NAT路由器上把地址转换成一个公网ip,因此能与因特网连接。

       局域网的网关在转发报文时,将源IP地址(原本为Client的地址)转换为自己的IP地址,并修改Port以区分同一局域网的不同主机上的不同PC。Server在接收到报文时,根据源IP(Client网关的IP),可以确定Client所在的局域网,这种方式称为动态的SNAT。

      如果因特殊要求需要外网访问内网,需要转换目的地址,Server在接收到经过SNAT的报文时,根据源IP定位到Client所在局域网网关,以所接收报文的源IP为目的地址,将回复报文发送给Client所在局域网网关。该网关接收到报文后,根据端口号发现报文是发给本局域网中的Client主机的,因此修改目的IP和目的Port, 把报文转发给局域网内Client,这种方式称为DNAT。

优点:

NAT不仅解决了公网IP 不足的问题还能隐藏IP,Server端看到的是局域网的公网IP,能有效避免网络攻击。

实现:

防火墙的iptables有四表五链和一些规则组成,四个表分别是table、filter、nat、raw

          filter表:过滤表规则,根据定义的规则过滤符号条件的数据包

          nat表:地址转换规则表

          mangle 表:修改数据标记位的规则表

         raw 表:关闭nat表上启用的链接跟踪机制,加速封包穿越防火墙速度

         优先级顺序从高到低: raw-->mangle-->nat-->filter

五个内置链条:input 、output、forward、prerouting、postrouting

我们可以通过防火墙来实现NAT,前提是防火墙要开启路由转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1


SNAT

静态地址:公网IP是确定的
iptables -t nat -A POSTROUTING -s LocalNET ! -dLocalNet -j SNAT --to-source ExtIP
例: iptables -t nat -A POSTROUTING -s 192.168.159.0/24  -j SNAT --to-source 172.17.250.200
动态地址:通过拨号上网,IP不确定
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE
例: iptables -t nat -A POSTROUTING -s 192.168.159.0/24  -j SNAT --to-source  MASQUERADE


DNAT

iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --to-destination InterSeverIP[:PORT]

例:iptables -t nat -A PREROUTING -d 172.17.250.200 -p tcp --dport   22  -j DNAT --to-destination 192.168.159.200

你可能感兴趣的:(linux,iptables,局域网,互联网,通信,防火墙)