linux下配置NAT服务

    网络地址转换(NAT)是用于将一个地址域(如:专用Intranet)映射到另一个地址域(如:Internet)的标准方法。NAT允许一个机构专用 Intranet中的主机透明地连接到公共域中的主机,无需内部主机拥有注册的(以及越来越缺乏的)Internet地址。 Internet工程任务组意识到目前地址空间(即所谓的IPv4)即将会耗尽已经有近十年时间了。尽管即将出现的IPv6被视作为解决Internet 不断发展的长期解决方案,但是在过去几年中还提出了其它一些短期解决方案。
    我这里写的主要是如何配置一个NAT 服务器,关于NAT 的知识,大家不妨到网上google 一下,
有很多讲这个的咚咚。如果连这个也懒得去做的话,我就推荐你去中国IT 认证实验室linux 架站文
件系列中的一篇NATserver(http://www.chinaitlab.com/www/special/linux11.asp),你也可以在这里
(http://linux.vbird.idv.tw/)找到它的原文,不过是繁体的,看起来可能有些麻烦。在我看来这个作
者是一个很牛的人,却自称菜鸟,佩服!如果有时间的话,可以将他所写的一系列的文章都看看,
您会受益匪浅的!
好了下面开始讲如何配置NAT 服务器,我的环境是这样的:
 服务器端
1. 操作系统:Linux 2.6 核心
2. 双以太网卡:eth0 用于连接内部网络,内部IP 为:10.20.10.174
eth1 用于连接外部网络,外部IP 为:159.226.41.140
3. 使用iptables 配置NAT 服务
客户端
1. Windows XP 客户端
2. Linux 客户端
配置步骤:
服务器端配置:
一. 首先将双网卡都驱动起来,并配置好其对应的IP 地址。
    如果您的机器这部分已经配置好了的话,就可以直接进入第2 步,使用iptables 配置NAT 服务
了,否则请随着我一步步来。配置双网卡,最好一个个的来,而且最好两个网卡不是同一个型号的
芯片。具体为什么我也不清楚,有的人说不这样容易出错。这部分内容可以参考这两篇文章,讲述
的很是详细。安装网卡(http://www.chinaitlab.com/www/special/linux3.asp#3),在架设NAT 时安装
双网卡(http://www.chinaitlab.com/www/special/linux11.asp#9)

 $ vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=no
ONBOOT=yes
USERCTL=no
PEERDNS=yes
GATEWAY=
TYPE=Ethernet
DEVICE=eth0
BOOTPROTO=none
NETMASK=255.0.0.0
IPADDR=10.20.10.174
设定对内的网卡eth0 的参数,要了解各个参数的意义,请查阅/usr/share/doc/initscripts-*/sysconfig.txt
$ vi /etc/sysconfig/network-scripts/ifcfg-eth1
IPV6INIT=no
ONBOOT=yes
USERCTL=no
PEERDNS=yes
GATEWAY=159.226.41.190
TYPE=Ethernet
DEVICE=eth1
BOOTPROTO=none
NETMASK=255.255.255.192
IPADDR=159.226.41.140
设定对外的网卡eth1 的参数。
$ vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=HPCOG-ASL
设定机器的网络信息,比如主机名,是否启动网络等。
$ vi /etc/resolv.conf
nameserver 159.226.39.1
nameserver 10.0.0.5
设定DNS 服务器
$ vi /etc/modprobe.conf
alias eth0 8139too
alias eth1 3c59x
设定eth0 为第一个网卡模块的别名,eth1 为第二块网卡的别名。
$ modprobe 8139too 3c59x && lsmod
启动两个网卡模块
$ /etc/rc.d/init.d/network restart
重新启动网络,应该也可以使用ifup eth0 eth1 这个命令来实现。
$ /sbin/ifconfig
查看网络配置信息
$ /sbin/route
查看路由信息。
二. 使用iptables 模块配置NAT 服务:

 #!/bin/bash
#filename: nat.sh
##################Introduction####################
# 1. The file content if for configuring linux NAT server.
# 2. Execution:
# $ mkdir -p /usr/local/nat
# $ cp nat.sh /usr/local/nat/nat.sh
# $ chmod u+x /usr/local/nat/nat.sh
# $ /usr/local/nat/nat.sh
# or you can let it run automatically when machine reboots.
# $ vi /etc/rc.d/rc.local
# append "/usr/local/nat/nat.sh start" to it.
# 3. modified by lirui 2005/08/10
# 4. mail me: colin719@gmail.com
##################################################
 
IPTABLES='/sbin/iptables'
EXTERNAL='eth1'
EXTERNIP='159.226.41.141'
INTERNAL='eth0'
INTERNIP='10.20.10.0/24'
 
#reset the three default ipchains
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
 
#reset the nat table
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
 
#flush the ipchains and nat table
$IPTABLES -F
$IPTABLES -t nat -F
 
#delete non-default rules of ipchains and nat table
$IPTABLES -X
$IPTABLES -t nat -X
 
#reset zero
$IPTABLES -Z
$IPTABLES -t nat -Z
 
start(){
        echo "Starting FireWall"
        #load necessary modules
        echo "Starting modprobe necessary modules for iptables"
        for i in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/* ; do
                t=`echo $i | sed 's//..o$//g'`
                mod=`basename $t`
                /sbin/modprobe $mod
        done
 
        #enable ICMP packet (ping)
        $IPTABLES -A INPUT -p icmp -j ACCEPT
 
        #enable communication inside local domain
        $IPTABLES -A INPUT -i $INTERNAL -s $INTERNIP -j ACCEPT
        $IPTABLES -A OUTPUT -o $INTERNAL -d $INTERNIP -j ACCEPT
 
        #enable ip masquerade
        echo "1" >/proc/sys/net/ipv4/ip_forward
        $IPTABLES -t nat -A POSTROUTING -o $EXTERNAL -s $INTERNIP -j MASQUERADE
        # $IPTABLES -t nat -A POSTROUTING -s $IPDOMAIN -j SNAT --to $OUTIP
        # $IPTABLES -t nat -A PREROUTING -d $EXTERNIP -p tcp --dport 21 -j DNAT --to $FTPIP
        # $IPTABLES -t nat -A PREROUTING -d $EXTERNIP -p tcp --dport 80 -j DNAT --to $WEBIP
        # Attention: there are no security!!!
}
 
stop(){
        echo "Stopping firewall"
        for i in /lib/modules/`uname -r`/kernel/net/ipv4/netfilter/* ; do
                t=`echo $i |sed 's//..o$//g'`
                mod=`basename $t`
                /sbin/modprobe -r $mod
        done
        #disable ipv4 packet forwarding
        echo "0" >/proc/sys/net/ipv4/ip_forward
}
 
restart(){
        stop
        start
}
 
#see how we were called
case $1 in
start)
        start
        ;;
stop)
        stop
        ;;
restart)
        restart
        ;;
*)
        echo $"Usage:$0 { start | stop | restart }"
        exit 1
esac
以上是我的一些简单的配置,对于复杂的配置,您可能还需要加入许多的内容哟.
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值