iptables实现地址转换

NAT:(工作在网络和传输层) 过载技术

Basic NAT:静态NAT
    一个内部主机,分配一个外网地址
NAPT:动态NAT,网络地址端口转换;net会话表
    源地址转换:SNAT 用于内网主机访问互联网
    目标地址转换:DNAT 让互联网上主机访问本地内网上的某服务器上的服务(发布)


iptables基于SNAT和DNAT这两个目标(target)实现地址转换技术

-j SNT --to-source SIP
    规则添加:POSTROUTING链
-j MASQUERADE  动态获取(外网地址是动态的)
-j DNAT --to-destination DIP{:PORT}
    支持端口映射

iptables实现地址转换

iptables实现地址转换



源地址转换示例

iptables实现地址转换

// 此时 filter 表上的 FORWARD 链 要打开(会经过此表中的此链)
[root@nat ~]# iptables -t nat -F
[root@nat ~]# iptables -t nat -L -n
[root@nat ~]# iptables -t nat -A POSTROUTING -s 10.1.249.158 -j SNAT --to-source 192.168.2.3
[root@nat ~]# iptables -t nat -L -n
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  10.1.249.158         0.0.0.0/0           to:192.168.2.3 

内部主机访问外部主机
[root@nei ~]# curl http://192.168.2.4/index.html
hello 
查看外部主机中web的访问日志
[root@wai ~]# tail /var/log/httpd/access_log
192.168.2.3 - - [13/Oct/2016:21:40:58 +0800]
192.168.2.3 - - [13/Oct/2016:21:40:59 +0800]
//主机,我们的内部主机IP为10.1.249.158
//而httpd的访问日志为192.168.2.3的访问
//说明成功实现了源地址转换


目标地址转换示例(对80端口的转换)

iptables实现地址转换

[root@luyou ~]# iptables -t filter -F 
[root@luyou ~]# iptables -t nat -F
[root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.4
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:80 to:192.168.2.4

[root@luyou ~]# netstat -tln | grep "\<80\>"  此时本机上并没有开放80端口
[root@wai ~]# curl http://10.1.249.125
hello  --> 此时我们访问为 luyou 主机上的80端口  由上面可知,此服务器上并没有开放80,而是将请求送往 后端服务器


目标地址和端口转换示例(对22端口的转换)

[root@luyou ~]# iptables -t filter -F  FORWARD
[root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 22022 -j DNAT --to-destination 192.168.2.4:22
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:22022 to:192.168.2.4:22 
[root@wai ~]# ssh -p 22022 10.1.249.125  --> 连接 luyou 设备的22022端口
[root@nei ~]# --> 连接到 nei  内网的主机上来
[root@luyou ~]# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 42 packets, 4633 bytes)
 pkts bytes target     prot opt in     out     source               destination         --> 有报文成功匹配到
    1    60 DNAT       tcp  --  *      *       0.0.0.0/0            10.1.249.125        tcp dpt:22022 to:192.168.2.4:22 

//此时我们请求luyou这台NAT服务器的22022端口的ssh服务,此时我们nat路由器的ssh服务并没有监听在22022端口,
//而是将目标IP和目标端口都进行了转换了,使我们连接到了内网的ssh服务器上

原创文章,作者:sixijie,如若转载,请注明出处:http://www.178linux.com/56515

(1)
sixijiesixijie
上一篇 2016-10-31 21:14
下一篇 2016-10-31 22:16

相关推荐

  • 走进linux的世界

    1、描述计算机的组成及其功能。  所谓的计算机就是一种计算器,而计算器其实是:接受用户输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的信息。 计算机系统由硬件系统和软件系统两个部分组成。 硬件系统由运算器、控制器、存储器、输入设备、输出设备组成。 运算器 是计算机中进行算术运算和逻辑运算的主要部件是计算机的主体。 控…

    Linux干货 2017-01-14
  • 交互式与非交互式的区别

    交互式与非交互式shell /登录shell于非登录shell 外网连不上,教室装修太吵,相关资料找不到,云云不知所云,托托症又犯了 登录shell_非登录shell // .bash_profile .bashrc profile 文件的作用的执行顺序 http://blog.csdn.net/robertaqi/archive/2010/04/04/54…

    Linux干货 2017-06-11
  • 马哥教育网络班22期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; [root@localhost ~]# fdisk /dev/sda 命令(输入 m 获取帮助):n All primary partitions are in use 添加逻辑分区 5 起始&nb…

    Linux干货 2016-10-09
  • Linux之yum详解及程序包安装

    Linux之 yum详解 及 程序包安装    在Linux常用的命令安装工具中,rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。    但是rpm有一个缺点,无法解决包的依赖性,也就是…

    Linux干货 2016-08-24
  • Linux文件压缩、解压、归档总结

    一、简介   压缩对我们来说通常意味着减小文件体积,节省硬盘空间。在Windows平台上处理大文件或目录中的文件很多时我们都需要对这些文件进行压缩处理,压缩格式多种多样,如:zip、rar、7z等格式,压缩方式也比较多样话,支持按最大压缩比例或者最快时间进行压缩等多种方式,而生成的压缩包就可以让我们更方便的进行拷贝及归档整理。解压缩顾名思义就是回归…

    Linux干货 2015-09-26
  • N26第二周博客作业

    1、  Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常见的文件查看命令有:cat,tac,head,tail,more,less,stat,touch 常见的文件管理命令有:cp,mv,rm 常见的目录管理命令:mkdir,rmdir 以下进行详细介绍: 1.1  文件查看命令 l  ca…

    Linux干货 2017-02-03