首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>网络管理>网络应用>正文

Linux系统上Iptables实现端口转发的过程

http://www.oklinux.cn  2007-08-06  赛迪网 sting  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

看了不少关于用Iptables实现端口转发的文章,但感觉都没有把问题说得很清楚,现接合我自己设置和使用的经历,谈谈它的实现过程.

 

设我们有一台计算机,有两块网卡,eth0连外网,ip为1.2.3.4;eth1连内网,ip为192.168.0.1.现在需要把发往地址1.2.3.4的81端口的ip包转发到ip地址192.168.0.2的8180端口,设置如下:

1. Iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination192.168.0.2:8180

2. Iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1

 

真实的传输过程如下所示:

假设某客户机的ip地址为6.7.8.9,它使用本机的1080端口连接1.2.3.4的81端口,发出的ip包源地址为6.7.8.9,源端口为1080,目的地址为1.2.3.4,目的端口为81.

主机1.2.3.4接收到这个包后,根据nat表的第一条规则,将该ip包的目的地址更该为192.168.0.2,目的端口更该为8180,同时在连接跟踪表中创建一个条目,(可从/proc/net/ip_conntrack文件中看到),然后发送到路由模块,通过查路由表,确定该ip包应发送到eth1接口.在向eth1接口发送该ip包之前,根据nat表的第二条规则,如果该ip包来自同一子网,则将该ip包的源地址更该为 192.168.0.1,同时更新该连接跟踪表中的相应条目,然后送到eth1接口发出.

 

此时连接跟踪表中有一项:

 

连接进入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81

连接返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080

是否使用: use=1

 

而从192.168.0.2发回的ip包,源端口为8180,目的地址为6.7.8.9,目的端口为1080,主机1.2.3.4的TCP/IP栈接收到该ip包后,由核心查找连接跟踪表中的连接返回栏目中是否有同样源和目的地址和端口的匹配项,找到后,根据条目中的记录将ip包的源地址由 192.168.0.2更该为1.2.3.4, 源端口由8180更该为81,保持目的端口号1080不变.这样服务器的返回包就可以正确的返回发起连接的客户机,通讯就这样开始.

 

还有一点, 在filter表中还应该允许从eth0连接192.168.0.2地址的8180端口:

Iptables -A INPUT -d 192.168.0.2 -p tcp -m tcp --dport 8180 -i eth0 -j ACCEPT

 

 


上一篇:架设基于Linux(2.6内核)的服务器集群   下一篇:部署Linux大型机,IBM节省2.5亿美元

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·架设基于Linux(2.6内核)的服务器集群
·在Linux下配置多线路ADSL的方法
·Ubuntu Linux系统上安装IE浏览器的方法
·详细讲解配置Linux系统下的动态DNS服务
·Redhat Linux 9下最简单的WebMail实现方案
·配置 DNS 辅助域名服务器和子域名服务器
·路由器和防火墙软件coyote Linux配置指南
·Linux两种简单替代“花生壳”软件的办法
·使用 screen 管理你的远程会话
·SSH实用技巧及常用命令使用说明
·Squid反向代理若干个后台的WEB实现说明
·无错版Vsftpd+Mysql+Pam配置虚拟用户方法
·Linux下的动态DNS服务配置方法详解
·Linux网络端口扫描工具Nmap And Nwatch
·Linux安全攻略 SSH服务连接时常见问题解答
·Linux系统平台下配置Proftp服务的小技巧
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·用putty在Windows下远程连接Linux出现
·Ubuntu的局域网安装方法
·四步轻松搞定Ubuntu Linux下WPA无线上
·Linux系统日志下vsftpd的配制
·Linux系统下DNS服务器的架设
·Linux系统下LVM扩充方法
·Ubuntu 8.04 LTS (Hardy Heron)更新源
·Firefox 3.0 Beta 4 推出
·VMware下让Linux系统与真实主机共享上
·Linux系统下服务器的硬件检查和文件传
·在虚拟机Redhat Linux下安装Samba服务
·Linux操作系统下PPPOE拨号共享上网方法
  阅读排行
·防火墙也能DIY----免费的专业级防火墙M
·用Xmanager远程管理LINUX,AIX等UNIX系
·linux下的rsync配置和使用教程
·LVS集群学习笔记(NAT\DR\IP tunnel)
·Ubuntu 8.04 LTS (Hardy Heron)更新源
·如何解决Xmanager不能登陆Linux系统问
·RHEL5实现高可用HA集群+GFS+Enterprise
·Suse Linux下的samba设置用户说明
·Linux 硬盘克隆备份详细图解
·用VNC实现远程桌面共享的方法
·xManager连接Linux的配置方法
·linux下文件服务Vsftp详细介绍
· Linux下Tomcat配置技巧详解分析
·Linux下使用Openssh工具远程管理Solari
·Linux操作系统下SVN服务器的搭建详解
网摘收藏: