基于Ubuntu网关配置(1)-- NAT

NAT,全称为Network Address Translation,意思是网络地址转换,如果想让所有的人都能够在共有IP不足的情况下上网,就可以使用NAT功能。

一台NAT主机一定要有两个IP: 其中一个是和互联网通信的共有IP;另一个是与内部局域网通信的私有IP。我们知道,网络上的所有信息封包的包头部分都含有源IP地址和目的IP地址,通过NAT主机,可以将从内部局域网发往互联网的封包的来源IP进行更改,将其更改NAT主机的共有IP,然后NAT主机将此更改的对应关系记录下来,这样内部主机就可以使用共有IP上网,反过来也是一样,从外部来的封包经过NAT主机时,NAT主机将封包的目的IP进行更改,从而使外网的主机能够访问内网的机器。通过使用NAT,不但节省了共有IP,而且能够有效地解决企业共有IP不足的问题。

想要实现NAT主机功能,需要一个包含Netfilter架构的内核。Netfilter是Linux系统的一个过滤机制,具体实现的功能室iptables软件来实现的。

Iptalbes是Linux中架设防火墙的工具,防火墙最大的功能就是能够限制某些进入主机的信息。对于Linux系统,防火墙主要有包过滤型和代理服务器,本文主要包过滤型防火墙。包过滤墙主要是能够对进出本机的网络信息封包进行分析,如果符合某个条件就让其通过,不符合条件就将封包丢弃,这样能够有效地保护主机的安全。但是包过滤型防火墙只是使用条件进行匹配,这样可能会阻止部分有效的信息。

iptables主要可以通过以下方式来对通过或进入的封包进行限定:

1)根据封包的协议来限定,主要有TCP,IP和ICMP协议。

2)根据封包的来源端口或目的端口来进行限定。

3)根据封包的来源IP或者是目的IP来进行限定。

4)根据封包的MAC地址进行限定。

iptables主要是由几张表组成常用的有filter表和nat表,filter表主要是用来进行封包过滤的,而nat表主要就是用来搭建NAT主机的。每个表都分别由几条链组成,而每条链里就是对封包进行判断的规则。filter表是由三条链组成的:INPUT链、OUPUT链、FORWARD链,每条链都有特定的功能。INPUT链就是对所有进入本机的封包进行控制的链;OUPUT链就是对所有由本机出去的封包进行控制的链;FROWARD链就是进行转发封包控制链。每条链都是由很多条规则组成的,这些规则就是对封包进行判断的条件,每个规则都会设定符合条件的行为,或者接受,或者丢弃,或者符合规则所指定的条件则很据行为进行操作。nat表包含三条链:PREPOSTING链、POSTROUTING链、和OUTPUT链,其中PREPOSTING链主要用于修改目的IP地址,用来配置DNAT,而POSTROUTING链主要可以用来修改源IP地址,用来配置SNAT。

接下来我们来看看NAT网关的具体配置方法:

初始状态时,我们利用NAT主机(笔记本电脑)上的无线网卡作为外网出口,初始IP是通过DHCP获得的,为192.168.1.108。

我们将内网的网络地址设定为192.168.2.0,以我们NAT主机上的有线网卡作为内网的网关,我们通过以下图1指令将其IP地址设为192.168.2.1:

图1

设定之后我们可见内外网网卡情况如下图2:

 
 

图2

继而我们利用iptables指令进行NAT网络的配置,首先清除一下已设定的iptables命令,具体指令如下图3:

图3

接着打开NAT网关,让数据封包能够进入,指令如下图4(将该条规则直接加到INPUT链的最后):

图4

然后设定iptables的转发使能,指令如下图5:

图5

继而我们通过iptables设定内网对外网的通信,使得当内网数据往外发送时,将数据包的源地址改为外网卡的IP地址,具体指令如下图6:

图6

然后,查看一下iptables的设定情况,指令和显示情况如下图7:

 
 

图7

当看到如上最后一行的显示表示配置成功。最后,我们打开ubuntu系统的IP转发功能,具体指令如下图8.1:

图8.1

接下来,我们设定外网对内网特定主机(192.168.2.99)的通信设定,实验中我们在192.168.2.99内网主机上放置了一个网页,然后通过外网访问该主页成功。我们需要设定如下iptables指令:

图8.2

至此NAT网关的配置完成。

接着,我们使用一台Windows7主机接到我们的内网网卡(有线网卡)上,并将其IP地址设定为192.168.2.100如下图9:

图9

然后我们在该内网主机上分别ping内网网关,ping外网(192.168.1.0网段)某台主机,以及上百度主页都能成功。具体情况如下图10:

图10

时间: 2025-01-18 08:17:10

基于Ubuntu网关配置(1)-- NAT的相关文章

基于Ubuntu网关配置(2)-- DHCP

DHCP,全称Dynamic Host Configuration Protocol,就是动态主机分配协议,他可以自动地为连接到TCP/IP网络的主机提供网络配置信息.在网络中,可以将一台计算机配置成DHCP服务器,这台DHCP服务器提供了可供分配的IP地址.DNS.网关等信息.而设置为自动获得IP地址的主机在重启网络服务器时会向整个网络发送一个广播请求,DHCP服务器会发出回应,从而使发出请求的机器获得相应的网络配置,加入到网络中. 配置了DHCP服务器后,网络管理员能够集中地对整个内部网络中

基于Ubuntu网关配置(3)-- DNS

DNS,全称Domain NameSystem,即域名解析系统.DNS帮助用户在互联网上寻找路径.在互联网上的每一个计算机都拥有一个唯一的地址,称作"IP地址"(即互联网协议地址).由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即"域名")取代.比如,您只需键入www.icann.org,而不是"192.0.34.163".即可访问ICANN的官方网站.DNS命名用于Internet等TCP/IP网络中,通过用户友好的名

ubuntu 虚拟机配置 IP、子网掩码、网关、DNS

ubuntu 虚拟机配置 IP.子网掩码.网关.DNS 执行 sudo vim /etc/network/interfaces 添加如下配置: auto eth0 iface eth0 inet static address 192.168.xx.xxx (ip) netmask 255.255.255.0 (子网掩码) gateway 192.168.xx.xxx (网关) dns-nameservers xxx.xxx.xxx.xxx (DNS) 根据宿主机 的网络信息自行修改内容 原文地址

Windows7下用VirtualBox安装Ubuntu网卡配置

Win7下用VirtualBox安装Ubuntu,要求Ubuntu能连上互联网,同时在Ubuntu中配置SSH.FTP.NFS服务,能从Win7进行访问. 此时Linux虚拟机需要两块网卡,一块使用NAT方式(网络地址翻译网络)连接,用于连接互联网: 另一块设置为网桥网络(Bridged),用于建立SSH.FTP.NFS连接,要求所有机器(Linux主机网卡IP和Win7网卡IP)应处于同一网段,如192.168.0.x,子网掩码255.255.255.0 NAT方式连接的网卡,使用默认设置即可

ubuntu安装配置NFS服务方便mini2440挂载

环境:物理机,ubuntu12.04设备:mini2440开发板,USB转串口线一根,网线一根目标:物理主机开启nfs服务,在mini2440中能够成功挂载主机的共享目录 一. 安装并配置nfs服务 1. 使用命令安装: sudo apt-get install nfs-kernel-server 2.  使用命令mkdir -m 777 share在/home/wh21/目录下新建一个share目录 3.  修改nfs共享配置文件/etc/exports      在最后一行添加: /home

在Ubuntu下配置舒服的Python开发环境

Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的一个安装和配置步骤,基于 Ubuntu 12.04 桌面版本标准安装. 安装 Python 发布版本和 build 依赖包 建议至少安装 Python 2.7/3.2 版本,毕竟 Python 2.X/3.X 还是有不少区别的. 1 2 3 4 # 安装 Python 发布版本,dev包必须安装,很多用pip安装包都需要编译 sudo apt-g

【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 Dennis Hu 2014-4-21 环境准备: 基本环境:ubuntu-14.04-desktop-64bit LTS(裸机或者Windows下虚拟机安装均可,12.04也可以,但10.04目前不支持了) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,其他为git和编译中间和目标文件准备 ===

基于Ubuntu 14.04 LTS编译Android4.4.2源代码

转载自:雨水:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 Dennis Hu 2014-4-21 环境准备: 基本环境:ubuntu-14.04-desktop-64bit LTS(裸机或者Windows下虚拟机安装均可,12.04也可以,但10.04目前不支持了) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,其他为git和编译中间和目标文件准备 =

ubuntu下配置vpn支持訪问外网

公司的开发环境都是局域网的,在公司内部使用没有什么问题.可是有时候确实要在外部比方家里.出差使用,这时候就须要配置vpn连接公司内网了.vpn的配置非常easy,但有时我们连了vpn后还须要公网资源.比方qq接收文件.查资料之类的,断了vpn再连外网.查完资料后再连vpn,非常烦.这就须要vpn同一时候也能訪问外网.windows环境下这样的配置非常easy.vpn的连接属性上.把ipv4的属性改为"自己主动获得IP地址"和"自己主动获得DNSserver地址"即可