专栏首页运维经验分享CentOS7 配置NAT服务器以及端口映射 原

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

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

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

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

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

2、配置IP地址

[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 文件,添加如下行

net.ipv4.ip_forward = 1
  • 1

使用 sysctl -p命令生效

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

firewall-cmd --zone=external --change-interface=eno16777736 --permanent
firewall-cmd --zone=internal --change-interface=eno33554984 --permanent
  • 1
  • 2

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

5、设置IP地址伪装

firewall-cmd --zone=external --add-masquerade --permanent
  • 1

6、设置NAT规则

firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o eno16777736 -j MASQUERADE -s 192.168.10.0/24
  • 1

7、设置生效

firewall-cmd --reload
  • 1

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

ping 百度测试网络是否连通 

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

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

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

[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({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Dockerfile搭建jdk、tomcat运行环境

    . 表示Dockerfile在当前文件夹下,也可使用绝对路径(/path/to/Dockerfile)来表示

    拓荒者
  • CentOS通过日志反查入侵 原

    该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,

    拓荒者
  • Linux下用netstat查看网络状态、端口状态

    在linux一般使用netstat 来查看系统端口使用情况步。       netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表...

    拓荒者
  • Android 通过DecorView计算statusBar、navigationBar的高度

    近期在做项目的时候碰到了底部虚拟按键在各个厂商适配的问题,闷逼了一圈,后面搜索一圈,发现即使各大厂商有变动,还是离不开原生本质

    包子388321
  • 关于ORACLE merge into 的两个常见错误

    小小明童鞋
  • Android开发之漫漫长途 XVII——动画(续)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

    LoveWFan
  • SCF: 为您网站的图片加水印

    很多论坛,很多博客在进行图片上传之后,都想着给自己的图像加上水印,这样可以证明这张图片“属于我”或者是“来自我的博客/网站”,那么传统的加水印的方法,通常是在流...

    Dfounderliu
  • 一个C#开发者重温Java的心路历程

    不论他在学校学的多好,都没用,因为他没练过,不能干活;同理,不论他在学校学的多差,进入工作岗位后,只要肯练,工作也不成问题。

    Kiba518
  • Android 中的属性动画 --- 1(基本用法)

    动画在提高用户体验里面起了巨大的作用,可以说是提高用用户体验的“主力军”。在 Android 3.0 之前,视图动画几乎承担了所有的动画效果,但是视图动画有一个...

    指点
  • Java 并发开发:内置锁 Synchronized

    在多线程编程中,线程安全问题是一个最为关键的问题,其核心概念就在于正确性,即当多个线程访问某一共享、可变数据时,始终都不会导致数据破坏以及其他不该出现的结果。而...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券