Linux下模拟验证NAT功能

Linux下模拟验证NAT功能

NAT(网络地址转换)功能能够方便内网与外网(通常是Internet)连接,既减少了有效IP的使用量又保护了内网主机的信息。

Linux下的NAT功能嵌入在Linux最新一代防火墙Netfilter中,并提供给用户操作接口Iptables,相关知识可以查看网上资料。

最近我通过两台安装了Linux的电脑搭建环境,验证了NAT功能的正确性。(我也是有够无聊的….)


环境搭建

这里写图片描述

正常的NAT的流程如上图所示,处于内网的主机PC2(10.0.0.2)要给外网的PC1发送数据,传包的时候一开始源地址为(10.0.0.2),经过NAT主机的时候服务器会把源地址改为(172.16.93.129)这样PC1收到数据的时候将按照目的地址为(172.16.93.129)来发送包(目的IP地址为局部内网的包是无法正确传输的)。

我现在稍微修改了上图的结构,变为(文章中IP为虚构):

这里写图片描述

因此相当于一台电脑里面包含了一个内部网址(相当于内部服务器),现在我需要通过外网主机(166.111.33.21)的访问主机(166.111.33.25)的内网服务器(192.168.10.10),但是对于外网主机A来说只知道B的主机外网IP,想要访问主机B的内网服务的话就是不行的,因此需要NAT的功能来进行地址转换。

添加虚拟网卡

这里顺便提一下Linux中如何添加一块虚拟网卡

  1. 首先修改网卡配置文件,Ubuntun下,网卡的配置文件是/etc/network/interfaces
    在这个文件中增加如下内容并保存:

    auto eth1
    iface eth1 inet static
    address 192.168.10.10
    netmask 255.255.255.0
  2. 重启网卡(重新加载配置文件)才会生效,使用如下命令重启:

    sudo /etc/init.d/networking restart

配置NAT

搭建好环境之后需要就开始配置NAT功能,在主机B中需要用iptables来实现NAT。

为了保证发送个主机B(166.111.33.25)的数据包能够转发给内网的服务器(192.168.10.10),我们首先配置如下命令:

DNAT:iptables -t nat -A PREROUTING -p tcp -j DNAT –to-destination 192.168.10.10

上述命令表示在发送到主机B的数据包若是属于tcp连接的进入目的地址转换,目的地址要变成192.168.10.10

同时我们还可以实现SNAT,即服务器发出数据包的时候将源地址变为主机B的166.111.33.25,命令如下:

iptables -t

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值