linux 9 如何设置internet网关?

[复制链接]
查看11 | 回复0 | 2009-1-30 06:28:38 | 显示全部楼层 |阅读模式
让局域网用户通过外网网卡上网,最好有详细步骤。

                                                                                                我2001年写的一篇文章中的相关部分,这个是全部的源码安装,希望对你有帮助。如果你直接使用安装包RPM,只要按下文配置好/proc内核文件系统以及IPTABLES即可。配置Linux网关和安装ipchains/iptables防火墙  在Linux上面的防火墙,最最常用的是ipchains,而且通常情况下是作为网关的附加部分安装的。Ipchains的规则是很复杂的,灵活性也很强,可以配制成各种五花八门的样子。这些都需要和你自己的实际情况相结合。这里,我们只介绍一种基于网关的简单配置。  安装IPCHAINS一般都不用你操心,因为几乎所有的Linux发行包都把该软件作为必须安装的却省配置。另一个原因是ipchains是跟内核(kernel)有很大的关系,因此最好在安装系统的时候选上相关选项(如果有)。在标题里面我们还提到了iptables,这个工具在表面上等同于ipchains,只不过是用于2.4内核的(2.4内核在这方面的代码几乎是重新写过的,功能有了长足的提高)。关于iptables工具的配置我们在后面介绍。你只需要记住2.2核心下使用ipchains,2.4核心下使用iptables即可。  首先,你的服务器需要两块网卡(或更多),这种机器叫做“多宿主主机”,是专门的用于做网关或路由器的。这里插一句:一般情况下,作为普通服务器的主机即使负载再重就需要一块网卡就够了,只有做网关或路由器的时候才需要多宿主主机。这并不象一般人认为得那样增加一块网卡可以增加一份带宽,事实上,一块网卡就可以提供足够的带宽。并且,还有人错误的把两块网卡接在同一个交换机上分配两个地址,这更是错误的,因为这样产生了额外的循环路由,会产生大量的内部警告错误,某些系统就会报警。  1、制作一个双界面(双宿主)的主机。  通常,现在的发行包的安装程序都可以识别两块网卡,这样就省事了。但是也有不少发行包只识别第一块网卡(也许是出于前面说的原因),或者你要在一台在用的机器上加一块网卡(因为你不愿意重装系统),那么就按照下面的办法处理。  1.1、我们就说PCI网卡。安装前首先看看网卡芯片,记住芯片的型号(希望你自己攒过机器)。  1.2、安装MAN手册(用发行包)  1.3、在/usr/doc/HOWTO/english/txt/Ethernet-HOWTO文件(如果是压缩的就释放)中搜索你的网卡型号,找到对应的驱动模块名称。  1.4、如果模块没有,还需要重新编译核心。在menuconfig网络设备一栏选中你的型号然后标记为*或M,编译完核心后别忘了编译模块:make modules;make modules_install。(不会的话再仔细温习一下前面编译内核的部分)  1.5、用depmod –a命令建立/etc/modules.conf(如果已经有就不用了),也有的发行包叫做conf.modules  1.6、编辑该文件加上一行:alias eth1 XXXX,其中XXXX是你刚才查到的模块名称。一般该模块文件位于:/lib/modules/内核版本号/net…中的XXXX.o文件。这个文件是你编译内核模块的时候产生的,你在内核配置的时候,凡是标记为M的都会被编译成.o文件放在这里。同样的,你选择的网卡驱动也是会编译成模块在这里的。  1.7、运行modprobe eth1使模块有效。  1.8、修改/etc/sysconfig/network文件中需要修改的部分。  1.9、建立或修改/etc/sysconfig/network-script/ifcfg-eth1文件(照抄那个eth0的即可),设定地址是你的真实情况,比如设为eth1要接的网段。这两个文件(eth0/eth1是启动的时候的脚本参数文件)  1.10、重新启动一下网络:/etc/rc.d/init.d/network restart  1.11、用ifconfig看看是否eth0/eth1都启动了。  1.12、大功告成  2、调整和编译核心:如果作为网关,有些核心选项需要配置。注意:这里的内核编译选项仅仅适合于2.2.X版本,2.4版本完全不同。  2.1、在/usr/src/linux中运行make menuconfig配置核心下列选项:  Networking options中Network firewalls IP: advanced router IP: firewalling IP: firewall packet netlink device IP: transparent proxy support IP: masquerading IP: ICMP masquerading IP: masquerading special modules support    IP: ipautofw masq support (EXPERIMENTAL)    IP: ipportfw masq support (EXPERIMENTAL)    IP: ip fwmark masq-forwarding support (EXPERIMENTAL) IP: masquerading virtual server support (EXPERIMENTAL)   (12) IP masquerading VS table size (the Nth power of 2)
  具体选项不同版本的内核不尽相同,你看着差不多就可以了。编译成模块或编进核心可以自由选择。  2.2、按照前面说的编译内核,重新启动后就具有网关功能了。启动后验证一下文件:/proc/sys/net/ipv4/ip_forward内容是否为1。(别告诉我不知道怎么看8-))  3、设置ipchains  本来这项工作是非常复杂的,但是我们这里讲的简单,让网关通了就行。  3.1、先看一下目前我们目前的假想环境:你的机器有两块网卡,一块连接在内网交换机配内部网络地址,另一块在外网交换机配公网地址。在这个机器ping 内网和外网的机器应该都能通。并且在内网的机器ping 该机器的外网地址也通,在外网的机器ping该机器内网的地址也同样通。这说明转发功能是有效的。  3.2、再试验一下:在内部网络把网关设为你的机器的内网地址,然后ping 外网的任一台机器(不是这台机器的外网地址),结果是不通。原因是ICMP包发出去后外网的机器不知道怎么回答,那里没有合适的路由,因为这个包的回应地址是内网。  3.3、现在设置ipchains:(ipchains软件适用2.2.X的内核,在2.4.X的内核中不适用。2.4.X的内核推荐使用iptables,关于该软件的用法在下面介绍)  ipchains –A forward –s 192.168.1.0/24 –j MASQ  黑体部分是内网地址。这句话的意思是,把所有内网发送的包都伪装成外部网的地址(那个机器的外网地址),这样,外部其他机器回应的时候就会发送到这台机器,经过转发就回来内网了。好了,一个简单的网关做好了。如果你需要实现防火墙(包过滤功能),则需要配置更加复杂的过滤规则,这些规则应该同时作用于input/output/forward链。  3.4、自动启动:设定了复杂的链,需要保存。在/etc/rc.d中建立一个文件:rc.ipfwadm把你的链脚本加进去就可以了。最后给这个文件+x属性(chmod +x rc.ipfwadm)。  4.在2.4.X内核中使用iptables建立Linux防火墙(网关)。  4.1 说明和下载  前面已经提到过2.4 内核中要使用iptables来做类似于ipchains在2.2内核中实现的事情。事实上,在2.4内核中的iptables包含了两个完全不同的部分:包过滤和地址转换。这两个功能在逻辑上是分开的,考虑到操作习惯上的问题才集成在一个配置程序(iptables)上。如果你安装了带有2.4内核的发行包,那么一般都带有iptables,并且在内核配置上也配置好了。如果要编译新的内核或者原来的内核没有支持iptables,需要选上相关的选项。使用make menuconfig 配置内核的时候操作:进入:Networking Options至少选择上:Network packet filtering (replaces ipchains) Network packet filtering debugging (NEW)  进入:IP: Netfilter Configuration--->Connection tracking (required for masq/NAT) (NEW)
FTP protocol support (NEW)
IRC protocol support (NEW)
  等等……  把下面的选项全部标记<*>  逐级返回上面菜单后保存配置,然后按照编译内核的那一套程序进行即可(参见前面的内容)。这里需要说明的是,内核支持了iptables功能,还需要有外部程序才行。如果你是直接安装的带有2.4内核的发行包,应该已经带有iptables实用程序了。但是如果你是从2.2核心的发行包直接升级到2.4内核,尽管按照上面的做法配置的核心,但是还不能使用iptables。还必须下载和编译iptables外部程序才能使用iptables功能。下载的地址是:http://www.netfilter.org ,下载的文件是iptables-1.2.6a.tar.bz2或更新的版本。  4.2 安装:  这个.bz2文件比较奇怪吧?把文件复制到/usr/local/src中,然后用下列命令释放编译和安装: bzip2 -dc iptables-1.1.2.tar.bz2 |tar vxf - (最后那个‘- ’别忘了)  你的系统可能没有bzip2工具,如果没有,你就去下一个:  进入新生成的目录 :cd iptables-1.2.6a 编译和安装:make ; make install  4.3 配置  如果你需要配置一个简单的网关,你仅仅需要配置一个转发加地址转换功能即可,我提供的参考脚本如下:  #begin  echo 1 > /proc/sys/net/ipv4/ip_forward  modprobe iptable_nat  modprobe ip_conntrack  modprobe ip_conntrack_ftp  modprobe ip_nat_ftp  iptables -F INPUT  iptables -F FORWARD  iptables –F OUTPUT  iptables -F POSTROUTING -t nat  iptables -t nat -F  iptables -P FORWARD DROP  iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT  iptables -A FORWARD -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT   iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24     -j SNAT --to 21.9.22.2  #end  其中3行modprobe是当你在内核中把iptables相关功能编译成模块(选成)的时候才用到的(也可能不止3行)。其中插入模块(modprobe)的几行比较重要,有时候当你作完NAT后,发现FTP不好用了,就要手工插入ip_nat_ftp模块(语法是:modprobe ip_nat_ftp)。黑体的地址部分可能是需要根据你网络的实际情况来决定的。最后一句话的意思是把凡是源地址是192.168.1.x的包做地址转换,转换为网关外侧地址21.9.22.2。好了,你已经建立起一个基本的网关了。其实iptables的功能及其强大,配置也非常灵活。其中的防火墙功能通过-t filter参数实现,地址转换功能通过-t nat实现(就像上面一样)。防火墙功能(packet filter)主要是3个链:INPUT,FORWARD,OUTPUT,地址转换功(nat)主要是3个链:PREROUTING,POSTROUTING,OUTPUT。观察当前的状态可以使用下面的命令:iptables –L –t filter 或 iptables –L –t nat。  好了,要配置出更灵活的、更强大的防火墙功能,全靠你自己了。我推荐你两个手册:《Linux 2.4 Packet Filter HOWTO》和《Linux 2.4 NAT HOWTO》。这两个文档是iptables的原作者写的,相当经典。英文不好?没关系,这两个文档都有中文版本。推荐你到:永远的UNIX(http://www.fanqiang.com)下载。                                       
提问者对答案的评价:

                                                                                                有个网络设置,跟WINDOWS里设置都是一样的                                       

                                                                                                用这个 netconfig
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行