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
下一篇 2016-10-31

相关推荐

  • bash特性

    一、命令历史     概念:shell进程能够将之前执行过的命令保存记录下来     存储位置:         1、命令历史的文件             使用以下环境变量查看相关参数:     &…

    Linux干货 2016-09-19
  • python知识点

    #ipython的使用## 帮助功能?:Ipython的概述和简介help(name):查询指定名称的帮助obj?:列出obj对象的详细信息obj??:列出更加详细信息 ## 特殊变量_ :表示前一次的输出__:倒数第二次输出___:倒数第三次输出_dh:目录历史_oh:输出历史 ## shell命令!command 执行shell命令!ls -l!touc…

    Linux干货 2017-10-03
  • N23-第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 文件管理工具:cp,mv,rm    cp命令:cope       源文件:目标文件       单源复制:cp [OPTION]… [-T] SOURCE DEST …

    Linux干货 2016-12-05
  • linux中用户、组和权限认识

    linux中用户、组和权限认识 Linux 用户和组的主要配置文件:/etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)                  …

    Linux干货 2017-02-23
  • 文本查找与文件查找

    咬文嚼字,颠倒糊涂,善哉!善哉? 念头通达,思虑有感,言简明,意通神 文件是什么?文本是什么?文本文件是什么?      好想来碗正常的豆腐脑,可惜每天早上也只能是豆腐花。吃不到,想想还是可以的,豆腐脑是“文件”,吃豆腐脑是“看文本”,找到地,点了豆腐脑,就是“查找文件”,符合个人口味的,加盐,加咸菜,加黄豆…

    2017-06-04
  • Mysql之主从复制

    Mysql之主从复制 节点一 修改配置文件设置唯一ID开起二进制日志 [root@node1 ~]# vim /etc/my.cnf 增加以下内容     [mysqld]     log-bin=master_bin &nbsp…

    Linux干货 2016-07-19