什么是NAT?

NAT(Network address translation)即网络地址转换,作为一种过渡解决手段,可以用来减少对全球合法IP地址的需求。简单的说,NAT就是在内部专用网络中使用内部地址,而当内部节点要与外界网络发生联系时,就在边缘路由器或者防火墙处,将内部地址转换成全局地址,从而使得在外部公共网(Internet)上使用一个和数个合法IP地址正常传输数据。

其中,这里的外网和内网是相对来讲的,下面假设能够访问互联网的网络为外网。

什么是DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

实验环境

  1. VMware Workstations
  2. 一台最小化安装的CentOS7,外网IP(NAT模式):192.168.204.133,内网网卡vmnet10(相当于仅主机模式,且不自动获取IP)
  3. 一台Windows7,内网网卡vmnet10(相当于仅主机模式,且不自动获取IP)

检查网络连通性

CentOS上执行以下命令:

# 检查centos到互联网的网络连通性
ping -c 4 www.baidu.com
ifconfig

查看linux上的网卡配置信息,本文中默认ens33为外网网卡,ens37为内网网卡

关闭防火墙

setenforce 0
systemctl stop firewalld
systemctl disable firewalld

配置内网网卡

vim /etc/sysconfig/network-scripts/ifcfg-ens37

添加如下内容

TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR="192.168.0.1"
NETMASK="255.255.255.0"
DNS1="223.5.5.5"

重启网卡

systemctl restart network

开启Linux路由功能

iptables -A FORWARD -i ens37 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens33 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward

解释(ens37为内网网卡,ens33为外网网卡):

第一条命令:让发送至内网网卡的数据全部通过

第二条命令:修改数据报头信息

第三条命令:开启Linux的路由功能

第四条命令:查看是否启用了路由功能,1代表启用,0代表禁用

具体命令需要根据自己的网卡名称进行修改

执行以下命令,设置开机自动配置 Linux路由功能

echo -e "
iptables -A FORWARD -i ens37 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens33 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
" >> /etc/rc.local
chmod +x /etc/rc.local

安装配置DHCP服务

安装DHCP服务

yum install -y epel*
yum install -y dhcp

复制DHCP配置文件

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

编辑并修改dhcpd.conf配置文件

vim /etc/dhcp/dhcpd.conf

查找并修改option domain-name项,修改为vmnet.com

查找并修改option domain-name-servers项,修改为223.5.5.5, 114.114.114.114

配置文件内容如下

# A slightly different configuration for an internal subnet.
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.100;
option domain-name-servers 223.5.5.5, 114.114.114.114;
option domain-name "vmnet.com";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
}

逐行进行解释

#subnet后跟子网网段,netmask后跟子网掩码
subnet 192.168.0.0 netmask 255.255.255.0 {
#地址池
range 192.168.0.10 192.168.0.100;
#DNS服务器地址(多个地址用","隔开)
option domain-name-servers 223.5.5.5, 114.114.114.114;
#为所分配的域分配域名
option domain-name "vmnet.com";
#为所分配的主机分发子网掩码
option subnet-mask 255.255.255.0;
#分发默认网关
option routers 192.168.0.1;
#分发广播地址
option broadcast-address 192.168.0.255;
#默认租期时间(秒)
default-lease-time 600;
#最大租期时间(秒)
max-lease-time 7200;
}

启动DHCP服务

systemctl restart dhcpd
systemctl enable dhcpd

查看启动状态

systemctl status dhcpd
netstat -uap | grep dhcpd

查看Windows7上的网络信息

禁用网卡,重新启动,查看网卡信息





检查访问互联网的连通性



可以正常访问百度

本文链接:https://www.cnblogs.com/connect/p/linux-service-nat.html

CentOS搭建NAT和DHCP服务,实现共享上网的更多相关文章

  1. 基于centos搭建微信小程序服务,配置及数据库等

    基于centos搭建小程序, ps:请提前20天准备将域名备案,申请ssl证书 实验上机地址:https://cloud.tencent.com/developer/labs/lab/10004 准备 ...

  2. CentOS搭建V~P~N服务,实现虚拟专用网络

    什么是V-P-N V-P-N即虚拟专用网络,它的功能是:在公用网络上建立专用网络,进行加密通讯. V-P-N网关通过对数据包的加密和数据包目标地址的转换实现远程访问.V-P-N有多种分类方式,主要是按 ...

  3. 基于CentOS搭建VNC远程桌面服务

    系统要求:CentOS 7.2 64 位操作系统 安装.启动 VNC VNC 远程桌面原理 名词解释: Xorg:在 Linux 用户中非常流行,已经成为图形用户程序的必备条件,所以大部分发行版都提供 ...

  4. 基于 CentOS 搭建 WordPress 个人博客

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 腾讯云提供了开发者实验室帮助用户搭建 WordPress 个人博客,教程内容如下,用户可以点击开发者实验室快速上机完成实验. 准备 LNMP ...

  5. CentOS下搭建DHCP服务

    DHCP的原理这里就不多说了,这里直接贴配置加解说 1.安装dhcp yum -y install dhcp-4.1.1-63.P1.el6.centos.x86_64 2.编辑/etc/dhcp/d ...

  6. Linux 之dhcp服务搭建

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议 dhcp服务器端监控端口67 涉及的配置文件:/etc/dhcp/dhcpd ...

  7. 复制虚拟机vmware centos搭建集群节点过程中网络配置eth0和eth1遇到的问题以及NAT模式下虚拟机静态IP配置方法

    在centos中安装完第一个虚拟机后,一般习惯通过克隆的方式创建其它虚拟机,开后vmware无法发现网卡信息,系统认为这是重新安装,所以重新创建了一个新的网卡叫eth1. 并且用IFCONFIG-a查 ...

  8. centos 搭建 git 服务端和客户端

    centos 搭建git需要设置远程服务端和客户端.远程代码存放在服务端,多个客户端可以共享和维护服务端代码. 一.服务端主机 1.创建ssh,大部分默认已经安装,有ssh就跳过 yum instal ...

  9. DHCP协议格式、DHCP服务搭建、DHCP协商交互过程入门学习

    相关学习资料 http://www.rfc-editor.org/rfc/rfc2131.txt http://baike.baidu.com/view/7992.htm?fromtitle=DHCP ...

随机推荐

  1. Apktool(1)——Apktool的安装

    Apktool是google提供的apk的编译工具,有了它就可以做很多事情.比如获取apk的源码,apk汉化,对手机rom包做一些美化. 首先来看看apktool的安装(配置): 以下内容主要翻译字A ...

  2. 超简单,Centos7 安装 rabbitMQ

    首先声明,本人是Linux新手一枚.经历了在阿里云Centos上部署rabbitMQ与重装的痛苦经历,后多方查找终于找到了简单方法.Linux高人来说请跳过本篇文章,新手可以试试. 1.设置Cento ...

  3. 基于 node 搭建博客系统(一)

    系统分为两端,分别实现. 管理员端: 功能 :个人信息,设置,发布随笔,随笔列表,删除随笔,查找,文章 等. 技术点:Boostrap + AdminLTE; 基于nodejs 实现的express ...

  4. 第七章 Hyper-V 2012 R2 授权管理

    当企业或组织的规模越来越大时,维护某一项单独的应用可能会由特定的运维人员进行管理.考虑到安全风险的问题,一般特定的运维人员不会拥有域管理员权限.自 Windows Server 2012 开始,操作系 ...

  5. bash的内置字符串处理工具

    bash内置字符串处理工具: 1.字符串切片: ${var:offset:number} 取字符串的子串: ${var:  -length} 取字符串的最右侧的length个字符.注意:冒号右侧必须有 ...

  6. MySQL sql_mode=only_full_group_by错误

    今天在测试服务器上突然出现了这么一个MySQL的问题,同样的代码正式服没有问题,那肯定就是出在了配置上,查了一下原因才明白原来是数据库版本为5.7以上的版本, 默认是开启了 only_full_gro ...

  7. 建立标准编码规则(四)-C#编码规范分类及实现

    1 现实中的问题 在任何一个公司,每个程序员编写的习惯可能都是不一样的,大到命名空间,小到变量的名字.甚至,我们去github,里面的大牛每个开源的项目的命名规则可能都不一样. 我们通常会遇到下面的问 ...

  8. VS Code 快捷键使用小技巧

    相关文档 官方文档(英文版):Documentation for Visual Studio Code 中文文档(未完成):GitHub - jeasonstudio/CN-VScode-Docs: ...

  9. sql server2008 R2打开报错:无法识别的配置节 system.serviceModel解决办法分享

    本人是先安装的sql server2008 R2成功可以运行后,再安装VS2010成功后,再打开sql server2008,就出现以下错误,无法连接服务器.   无法识别的配置节 system.se ...

  10. 月球美容计划之最小生成树(MST)

    寒假学的两个算法,普里姆,克鲁斯卡尔最终弄明确了.能够发总结了 先说说普里姆,它的本质就是贪心.先从随意一个点開始,找到最短边,然后不断更新更新len数组,然后再选取最短边并标记经过的点,直到全部的点 ...