前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7 配置NAT服务器以及端口映射 原

CentOS7 配置NAT服务器以及端口映射 原

作者头像
拓荒者
发布2019-03-11 17:38:33
7.3K0
发布2019-03-11 17:38:33
举报
文章被收录于专栏:运维经验分享

最近有一台Esxi服务器需要做托管,只有一个公网ip,但是所有虚拟机又都需要访问公网,我在Esxi里没有找到类似Vmware workstation 的NAT网络模式,所以我想使用一台虚拟机做NAT服务器。我的虚拟机系统有Win2008 和 CentOS7,考虑到稳定性我选择了在Linux上实现。 以下是我在笔记本上用Vmware WorkStation 做的模拟实验:

  • 先介绍一下实验环境
  • 物理机:Windows 10 + Vmware WorkStation 12
  • 虚拟机1:windows 7 ,虚拟单网卡 NAT
  • 虚拟机2:CentOS7 最小化安装,双虚拟网卡 NAT 
CentOS7配置
CentOS7配置

由于两台虚拟机的网卡都配置为 NAT 模式,可以认为他们都在同一个交换机下,可以互相访问。

  • 开始配置CentOS7  1、 准备工作(更新系统、安装网络工具)
代码语言:javascript
复制
yum -y update
  • 1
代码语言:javascript
复制
yum -y install net-tools.x86_64
  • 1

2、配置IP地址

代码语言:javascript
复制
[root@test ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.32.130  netmask 255.255.255.0  broadcast 192.168.32.255
        inet6 fe80::20c:29ff:fe4c:4213  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4c:42:13  txqueuelen 1000  (Ethernet)
        RX packets 6525  bytes 2334108 (2.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4816  bytes 2671369 (2.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno33554984: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.1  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe4c:421d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4c:42:1d  txqueuelen 1000  (Ethernet)
        RX packets 5656  bytes 1625792 (1.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3596  bytes 3461007 (3.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

我的两块网卡分别为 eno16777736 和 eno33554984,我打算将eno16777736 作为外网访问,故IP保持默认DHCP自动分配,这边分配到的IP为 192.168.32.130。eno33554984 作为内网访问,ip设置静态 192.168.10.1,ip具体设置方法不再累述。

3、启用IP转发  修改 /etc/sysctl.conf 文件,添加如下行

代码语言:javascript
复制
net.ipv4.ip_forward = 1
  • 1

使用 sysctl -p命令生效

4、修改接口区域  默认情况下两块网卡的zone为public,现在需要将eno16777736 设置为 external,将 eno33554984 设置为 internal。

代码语言:javascript
复制
firewall-cmd --zone=external --change-interface=eno16777736 --permanent
firewall-cmd --zone=internal --change-interface=eno33554984 --permanent
  • 1
  • 2

其中 --permanent表示永久生效。

5、设置IP地址伪装

代码语言:javascript
复制
firewall-cmd --zone=external --add-masquerade --permanent
  • 1

6、设置NAT规则

代码语言:javascript
复制
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eno16777736 -j MASQUERADE -s 192.168.10.0/24
  • 1

7、设置生效

代码语言:javascript
复制
firewall-cmd --reload
  • 1

8、验证  在win7虚拟机中配置ip为 192.168.10.10,网关192.168.10.1,如图 

这里写图片描述
这里写图片描述

ping 百度测试网络是否连通 

这里写图片描述
这里写图片描述

至此,NAT服务器配置完成。

  • 开始配置端口映射  因为我需要从外网访问到内网的win虚拟机,所以需要端口映射,以远程桌面访问为例,windows的远程桌面端口为tcp 3389,所以只需要将外网的端口映射到内网3389即可,命令如下:
代码语言:javascript
复制
firewall-cmd --zone=external --add-forward-port=port=3389:proto=tcp:toport=3389:toaddr=192.168.10.10 --permanent
firewall-cmd --reload
  • 1
  • 2

查看设置,我这里设置了两个端口

代码语言:javascript
复制
[root@test ~]# firewall-cmd --zone=external --list-forward-ports
port=3389:proto=tcp:toport=3389:toaddr=192.168.10.10
port=5000:proto=udp:toport=5000:toaddr=192.168.10.10
  • 1
  • 2
  • 3
  • 4

验证端口映射:  在物理机上使用 mstsc 工具,连接CentOS 的外网IP ,即一开始提到的 192.168.32.130

这里写图片描述
这里写图片描述

好了,实验完毕。因为我所有的虚拟机都是静态ip,所以没有安装DHCP服务。

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档