免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2008 | 回复: 0
打印 上一主题 下一主题

Linux双网卡搭建NAT服务器 [复制链接]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-04 12:22 |只看该作者 |倒序浏览

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

  Normal
  0
  
  7.8 磅
  0
  2
  
  false
  false
  false
  
   
   
   
   
   
   
   
   
   
   
   
   
  
  MicrosoftInternetExplorer4



st1\:*{behavior:url(#ieooui) }
/* Style Definitions */
table.MsoNormalTable
        {mso-style-name:普通表格;
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:"Times New Roman";
        mso-fareast-font-family:"Times New Roman";
        mso-ansi-language:#0400;
        mso-fareast-language:#0400;
        mso-bidi-language:#0400;}
本文欢迎自由转载,但请标明出处和本文链接,并保持本文的完整性。
CU: Godbach
Blog:
http://blog.chinaunix.net/u/33048/index.html

Jan 4, 2010
一、需求
学习Linux网络部分,关键还是在理解的基础上实践。要实践,就要准备好自己的环境。
譬如,我是想写一个小程序,实现一个hook函数,在FORWARD点上对来往的数据包进行监控和过滤等功能。那么,所需的环境见第二部分介绍。
二、环境
要实现这个功能,个人准备的环境如下:
(1)一个Linux系统主机,双网卡,实现转发功能。其中网卡eth0可以上外网,eth1链接内网。
(2)一个内网客户端主机,Linux/Windows都行;
(3)一个交换机,用于实现内网客户主机和Linux主机的通信。
三、配置
(一)网络结构
由第二部分介绍的环境可以看出,Linux系统主机主要是实现转发功能,让内网主机可以成功的访问外网。
因此, 首先介绍一下Linux系统主机的配置。Linux主机是可以直接通过eth0上外网的。eth0的IP地址,GW和DNS都是自动获取的。当然,如果是手动分配IP、GW和DNS也是没问题的。我的eth0配置如下:
IP: 192.168.79.129/24
GW: 192.168.79.1
DNS:192.168.79.2
Linux主机的eth1指向内网,IP地址为:10.50.10.1/24。内网主机的内网主机的IP地址就是10.50.10.0/24段的IP,eth1的IP是所有内网主机的网关。这里,我的内网主机设置如下:
IP: 10.50.10.46/24
GW: 10.50.10.1
DNS:192.168.79.2
这里,所有内网主机的网关都设置为eth1的IP地址,而DNS设置为eth1所在的Linux系统主机的DNS,即192.168.79.2。
以上配置对应的网络结构图如下所示:

(二)启用转发功能
       以上配置完成后,Host A应该可以ping通Linux系统主机的eth1的IP,因为他们是通过交换机链接的。但是,Host A应该可以ping不通Linux系统主机的eth0的IP,应为并未开启Linux系统主机的转发功能。
       开启Linux的转发功能,执行如下命令:
       # echo 1 > /proc/sys/net/ipv4/ip_forward
       查看系统是否启用了转发功能,可以执行如下命令:
# cat /proc/sys/net/ipv4/ip_forward
如果结果为1,代表已启用,0代表未启用。
此时,执行ping 192.168.72.129 以及其网关和DNS都可ping通了。
(三)配置NAT规则
       经过第二部分配置后,虽然可以ping相关的IP地址,但是内网主机还是无法上网。问题在于内网主机的IP地址是无法在公网上路由的。因此,需要转换成Linux系统主机可以上网的IP(注:这里我们只说不说是公网IP,是因为Linux系统可以直接上外网的IP同样是内网IP。但是该内网IP(192.168.79.129)已经通过一些机制,实际上同样是NAT的方式,可以访问外网了,因此我们只需将Host A的IP转换成Linux系统eth0接口的IP即可)。
       我们配置的NAT为源NAT转换:
#iptables -t nat -A POSTROUTING -s 10.50.10.0/24
-o eth0 -j MASQUERADE
也可以通过使用SNAT target实现:
#iptables -t nat -A POSTROUTING -s 10.50.10.0/24
-o eth0 -j SNAT --to-source 192.168.79.129
至于MASQUERADE和SNAT的区别,可以网上搜索,有相关的解释。
同时,还要在FORWARD点出配置规则如下:
#iptables -A FORWARD -i eth1 -j ACCEPT
保证所有进入eth1的包都被FORWARD点ACCEPT。

经过以上的配置之后,Host A就可以正常的访问外网了。
四、如果只有一台主机...
       按照上面介绍的环境,逻辑上需要两台主机方可实现。如果我只有一台电脑的话,如何实现搭建NAT服务器,并且通过内网主机访问外网来验证配置的结果呢?
       很明显,虚拟机给我们提供的解决方案。不过仍然需要两个前提:其一,电脑双网卡;其二,有一个交换机。
说一些我自己的环境,一台笔记本,普通网卡+无线网卡,一个交换机。本身笔记本上安装的是Windows操作系统。上网使用无线网卡,DHCP获得IP,网关和DNS。但是这个系统仅作为宿主机,Linux和内网主机都安装使用虚拟机操作系统。
(1) Linux系统主机
       安装一个Linux系统的虚拟机,两张网卡都启用,其中对应无线网卡的是eth0,采用的上网方式是VMnet8(nat),其实相当于VMware实现了DHCP服务器,将Linux虚拟系统的eth0通过宿主机的无线网卡上网。这就是eth0可以上网的原因。但是我们可以不用关心eth0如何上网的,只要eth0可以上网,我们就可以开始搭建NAT服务器的配置了。
       eth1对应普通网卡,IP地址的配置参考上面的拓扑图即可。
(2)内网主机
       安装一个Windows操作系统的虚拟机,仅启用一张网卡,对应于宿主机的普通网卡。这样,内网主机上网就只能通过该网卡实现。该网卡的配置同样参考上面的拓扑图。
       这样,我就可以在一台电脑上,使用内网主机,通过Linux主机的NAT转换功能,访问外网了。
       因此,按照这种方式实现之后,想在Linux的FORWARD点验证你的想法,加一个hook函数就可以了。
五、参考链接
1.
http://blog.chinaunix.net/u/16255/showart_100254.html
2.
http://panpan.blog.51cto.com/489034/189072
3.
http://www.howtoforge.com/nat_iptables
4. iptables中SNAT和MASQUERADE的区别:

http://server.zdnet.com.cn/server/2008/0317/772069.shtml





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/33048/showart_2138786.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP