网络地址转换(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

以上是我的一些简单的配置,对于复杂的配置,您可能还需要加入许多的内容哟.

linux下配置NAT服务相关推荐

  1. Linux下配置OpenLDAP服务记录

    摘要:最近部门需要整合所有的系统,所以领导说要通过OpenLdap数据库来实现对所有系统的统一管理,所以需要在服务器上配置一下LDAP服务,我们这里选择的是OpenLdap服务,我在网上搜索了很多,开 ...

  2. Linux下配置DNS服务

    一.DNS服务简介 DNS服务器,也称为域名解析服务器,是用来将互联网上的域名解析为IP地址的一类服务器,在世界上有成百上千台DNS服务器.对于有些公司来说,对于同一个域名可能有多个DNS服务器,这样 ...

  3. linux未识别smb服务,Linux下配置smb服务

    1.在有网的情况下安装软件 yum -y install samba 2.查看配置文件 vim /etc/samba/smb.conf 3.安全级别 安全级别: share 共享级别(不需要密码) u ...

  4. Linux系统终止httpd服务,【转】Linux下apache/httpd服务启动与停止

    apache服务,或者说httpd服务,如何启动,如何开机启动. 转来转去,找不到原文.. 操作系统环境:红帽5,具体如下: # uname -a Linux machine1 2.6.18-164. ...

  5. Linux下配置jupyter notebook远程访问实战:配置Jupyter的连接密码、启动jupyter服务、远程访问jupyter(关闭防火墙)

    Linux下配置jupyter notebook远程访问实战:配置Jupyter的连接密码.启动jupyter服务.远程访问jupyter(关闭防火墙) 目录 Linux下配置jupyter note ...

  6. Linux下的samba服务配置详解

    Linux下的samba服务配置详解 一.Samba介绍 二.Samba工具及特性 三.搭建环境介绍 四.Samba配置步骤 1.服务端操作 2.在客户端操作 五.测试用户的权限情况 一.Samba介 ...

  7. Linux下配置FTP、SSH服务

    在虚拟机中的Linux系统下配置FTP服务和SSH服务,配置完后就可以通过SecureCRT软件登录Linux系统. 配置FTP服务: 在Linux终端中输入命令: sudo apt-get inst ...

  8. linux 怎么配置apache,在Linux下配置Apache Web服务

    <在Linux下配置Apache Web服务>由会员分享,可在线阅读,更多相关<在Linux下配置Apache Web服务(10页珍藏版)>请在人人文库网上搜索. 1.在Lin ...

  9. linux vnc 改端口号,RHEL6下配置vncserver服务(包括修改vnc端口)

    RHEL6下配置vncserver服务(包括修改vnc端口) (2012-04-13 23:36:07) 标签: it 配置完vsftpd后,还必须要开的服务就是vnc啦, 首先,在root用户下利用 ...

最新文章

  1. 输入法编程教程---软键盘(小键盘?)类,C++编写
  2. 《Python 学习手册4th》 第四章 介绍Python对象类型
  3. from flask.ext.wtf import Form 报错 ModuleNotFoundError: No module named 'flask.ext'
  4. 13. python 类
  5. LinuxMint(Ubuntu)安装文泉驿家族黑体字
  6. linux exit 源码,Linux命令——exit、sulogin、rlogin
  7. jmeter(四十五)常用Beanshell脚本
  8. c# Form中的键盘响应
  9. 什么是值传递?什么是引用传递?
  10. Java数据持久层框架 MyBatis之API学习五(Mapper XML 文件)
  11. Jmeter的Throughput有误差与分布式测试时的坑
  12. 编译ROS-Academy-for-Beginners
  13. Jsp基本指令和动作
  14. 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
  15. matlab生成chirp信号,chirp信号(chirp信号的产生)
  16. html老师祝福语,给大学老师的祝福语
  17. matlab绘三维椭球面_MATLAB绘制三维图形
  18. mac版 IGV(版本2.12.3)安装
  19. 【EduCoder答案】冯诺伊曼体系结构建模与模拟实训
  20. 支付宝支付-当面付和App支付

热门文章

  1. VC#复习资料(是轩~)
  2. matlab白光干涉,matlab白光干涉
  3. 【解决】Expanding invalid MinMaxAABB
  4. 第 7 篇、Linux C基础 | 变量和常量
  5. Cannot read properties of undefined (reading ‘extraneous‘) npm install时
  6. 在线视频学习网站的设计与实现
  7. python的scipy简介
  8. python五子棋程序教程_Python 五子棋 编程
  9. 3D美术人员Technical Artist(TA技术美术)的学习之旅(3)
  10. 30个必备英文免费手写字体下载