linux服务器自建snat和dnat

简介: 为了节省成本,购买了云服务器的时候只买了一个公网IP,但是有多台机器需要实现上网或者是被访问,一个IP只能绑定一个机器,就只能使用NAT网关或者是内网源进行下载,受限较大。

1、问题背景

为了节省成本,购买了云服务器的时候只买了一个公网IP,但是有多台机器需要实现上网或者是被访问,一个IP只能绑定一个机器,就只能使用NAT网关或者是内网源进行下载,受限较大。

2、测试环境

测试环境:阿里云专有网络VPC下的两台服务器,一台有公网,一台没有公网,同内网

系统:linux系统

注:firewalld实现方案需要在红帽系列带有firewalld防火墙管理的系统上操作

3、实现方案

3.1 构建SNAT网络实现无公网机器上网(选用一种就可以)

3.1.1 iptables实现方式

3.1.1.1 创建专有网络并创建新机器

专有网络是:vpc-hp***********yomk 10.0.0.72是有公网的,10.0.0.73是内网机器

如上图,一台服务器是有公网的,一台服务器是没有公网的

3.1.1.2 设置路由表

进入专有网络路由表

添加路由

3.1.1.3 在带有公网的服务器内部设置(内网机器不需要配置)

开启IP转发:

在/etc/sysctl.conf添加net.ipv4.ip_forward = 1,然后执行

sysctl  -p使其生效


iptables -t nat -I POSTROUTING -s VPC的IP段 -j SNAT --to-source  公网IP的ECS内网IP

注:10.0.0.0/8就是内网要上网的机器或者IP段,10.0.0.72就是公网的内网地址


3.1.1.4 测试

此时在没有内网的机器内部测试

3.1.2 firewalld实现方式

先根据3.1.1.1和3.1.1.2设置交换机配置路由表、设置转发。firewalld只是添加转发的规则需要使用富规则

firewalld设置了zone的概念,iptables是主机防火墙,firewalld可以为不同的网卡绑定不同的zone,然后实现访问控制

3.1.2.1、修改网卡的zone

sudo firewall-cmd --permanent --zone=external --change-interface=eth0

执行结果

sudo firewall-cmd --permanent --zone=external --change-interface=eth0

success


3.1.2.2、设置特定 区域的snat-IP伪装

sudo firewall-cmd --zone=external --add-masquerade --permanent


3.1.2.3、设置转发规则

sudo firewall-cmd --zone=external --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" masquerade'

执行结果:

sudo firewall-cmd --zone=external --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" masquerade'

Warning: ALREADY_ENABLED: rule family="ipv4" source address="10.0.0.0/8" masquerade

success

3.1.2.4、重新加载生效

sudo firewall-cmd --reload

3.1.2.5、测试

在内网机器上执行测试

ping -c 4 aliyun.com

PING aliyun.com (140.205.135.3) 56(84) bytes of data.

64 bytes from 220.181.38.251 (140.205.135.3): icmp_seq=1 ttl=52 time=14.1 ms

64 bytes from 220.181.38.251 (140.205.135.3): icmp_seq=2 ttl=52 time=14.0 ms

64 bytes from 220.181.38.251 (140.205.135.3): icmp_seq=3 ttl=52 time=14.0 ms

64 bytes from 220.181.38.251 (140.205.135.3): icmp_seq=4 ttl=52 time=14.0 m

3.2、DNAT实现

3.2.1 iptables实现

3.2.1.1 配置

在公网机器上执行

iptables -t nat -A PREROUTING -d 10.0.0.72 -p tcp --dport 80 -j DNAT --to 10.0.0.73:80

这个指令实现了当客户端访问10.0.0.72所对应的公网的80端口的时候,就会转发到10.0.0.73的80端口,实现访问内部服务


3.2.1.2 测试

3.2.2. firewalld实现

3.2.2.1 配置

1、设置转发规则

firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.0.0.73 --permanent

[root@ceshi~]# firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=80:toaddr=10.0.0.73 --permanent

success

2、重载生效

firewall-cmd --reload

[root@ceshi ~]# firewall-cmd --reload

success

3.2.2.2、测试

到此,自建SNAT和DNAT的过程全部结束

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
8月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
9月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
2981 0
|
9月前
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
873 0
|
9月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
860 13
|
10月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
1681 21
|
10月前
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
404 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
|
11月前
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
11月前
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
|
6月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1154 2
下一篇
开通oss服务