百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

局域网服务器访问外网方案

nanshan 2024-12-12 14:08 8 浏览 0 评论

在阿里云、腾讯云等云平台购买多台服务器时,出于成本考虑,不会为每一台服务器配置公网 IP。这样就带来一个问题,没有公网 IP 的服务器就无法访问外网。本文介绍一种使未绑定公网 IP 的服务器访问外网的可选方案,前提是购买的多台服务器中至少有一台绑定了公网 IP。

在此先介绍下基本原理和基本步骤,对网络了解得比较多的朋友可能一看就知道怎么回事了。后面再详细介绍下具体操作流程。

基本原理

使用绑定了公网 IP 的服务器作为代理进行网络的转发

基本步骤

假设有两台服务器:

  1. 服务器 master,绑定了公网 IP,可以访问外网
  2. 服务器 worker1,未绑定公网 IP,不能访问外网

操作步骤如下:

  1. 建立 worker1 到 master 的隧道
  2. 修改 worker1 的路由表,使用 master 作为路由
  3. 在 master 上,使用 iptables 对来源为 worker1 的请求做 SNAT 转换

详细介绍

本文以云平台购买的两个节点实例为例:

  • master 节点:内网 IP 192.168.0.197
  • worker 节点:内网 IP 192.168.0.196

其中 master 节点绑定了公网 IP,可以访问外网,worker 节点没有绑定公网 IP,不能访问外网。

通过 ip route show 命令查看两台主机的路由表,都有一条记录为:

default via 192.168.0.253 dev eth0

也就是说,这两台主机默认都以 192.168.0.253 作为路由转发请求,因此我们可以大概猜测网络拓扑如下:

当然真实的网络拓扑会比较复杂,这里只针对购买的两台主机做一个简化。

现在我们要做的是,worker1 节点通过 master 节点作为代理,获得访问外网的能力。

第一步:建立 master 节点到 worker1 节点的隧道

因为两台机器在一个内网中,本身是可以互通的,因此我们可以通过默认网卡在两台主机间建立隧道。

在master 节点执行如下命令

# 创建一个 IPIP 类型的虚拟网卡
# ip tun add [虚拟网卡名称] mode ipip remote [对端 IP 地址] local [本机 IP 地址]
ip tunnel add worker1_tunl mode ipip remote 192.168.0.196 local 192.168.0.197

# 启动刚刚创建的虚拟网卡
ip link set worker1_tunl up

# 为创建的虚拟网卡绑定 IP 地址
# ip add add [本机要绑定的 IP] peer [对端要绑定的 IP 地址] dev [本机要绑定 IP 的虚拟网卡名称]
ip add add 192.168.3.100 peer 192.168.3.101 dev worker1_tunl

这样执行 ip addr show 命令可以看到多了如下一个网卡:

可以看到该网卡绑定了 IP:192.168.3.100

同样的,在 worker1 节点执行如下命令

ip tunnel add master_tunl mode ipip remote 192.168.0.197 local 192.168.0.196
ip link set master_tunl up
ip add add 192.168.3.101 peer 192.168.3.100 dev master_tunl

执行 ip addr show 命令看到 worker1 节点多了如下网卡:

可以看到该网卡绑定了 IP:192.168.3.101

现在我们验证下隧道是否建立成功,在 master 节点执行 ping 192.168.3.101

同样在 worker1 节点执行 ping 192.168.3.100

可以看到,两台主机已经可以通过设置的 IP 互相访问了,这样两台主机之间的隧道就建立成功了

第二步:在 worker1 节点修改路由表,让 master 节点作为 worker1 节点默认路由的网关

我们可以先执行 ip route show 查看下当前的默认路由

该路由显示 worker1 节点上的默认路由使用 192.168.0.253 作为默认网关

首先,执行 ip route del default 删除默认网关

然后,执行 ip route add default via 192.168.3.100 dev master_tunl 设置使用 master 节点作为默认网关, 注意这里使用创建的 master_tunl 虚拟网卡作为网络设备

第三步:在 master 节点通过 iptables 工具,对通过我们创建的隧道过来的请求进行 SNAT 转换

因为从 worker1 过来的请求源地址为 192.168.3.101,是一个内网地址,如果不进行 nat 转换的话,外网中的请求是无法到达 worker1 节点的

我们执行如下命令进行 nat 设置

# 我们设置的隧道网段为 192.168.3.0/24, 如下设置会把源地址在网段 192.168.3.0/24 的请求进源地址转换,
# 源地址会被伪装成出口网卡的 IP 地址
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

以上就是所有的步骤了,我们来验证下

在 worker1 节点执行 ping baidu.com

可以看到 worker1 节点可以访问外网了

问题

  1. 按上述步骤设置后仍然无法访问外网?

检查 master 节点是否开启了路由转发功能,该方案需要转发节点开启转发功能

开启方式:

  1. 需要修改 sysctl.conf 文件,配置 net.ipv4.ip_forward = 1
  2. 执行 sysctl -p 使之生效

相关推荐

服务器温度监控--lm-sensors(服务器温度怎么看)

lm-sensors是一款linux的硬件监控的软件,可以帮助我们来监控主板,CPU的工作电压,风扇转速、温度等数据。这些数据我们通常在主板的BIOS也可以看到。当我们可以在机器运行的时候通过...

MySQL版本区别及管理(mysql版本最新版本)

MySQL版本区别及管理一.MySQL5.6与MySQL5.7安装的区别1、cmake的时候加入了bostorg2、初始化时使用mysqld--initialize替代mysql_install...

Linux技术问答系列-NO4(linux必知必会)

一.绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示?切换目录用什么命令?绝对路径:如/etc/init.d当前目录和上层目录:./../主目录:~/切换目录:cd二...

猫盘原版系统开启ssh教程(猫盘原版系统怎么样)

猫盘是之前网上流传许久的矿渣,默认其系统不支持SSH功能,为了能打开其SSH功能,我特意制作操作教程如下:1、到网盘下载相关软件,利用猫盘系统自带功能,将assets放入个人存储目录下,并牢记对应的...

一探究竟——天融信网闸TopRules7000

网闸即:安全隔离与信息交换系统,常用作企业内外网隔离与业务互访用途。相比给服务器加多块网卡跨多个网段来说,网闸提供了更加安全的方式。探究背景:某次,网闸配置新业务,重启设备查看是否生效,结果发现刚重启...

操作系统加固通用Linux篇(linux系统加固常见操作)

1检查是否配置登陆超时时间设置编辑vi/etc/profile文件,配置TMOUT将值设置为低于300.TMOUT=3002检查是否禁止root用户登录FTP设置如下将对应配置文件中,设置roo...

zabbix agent的安装与配置(zabbix-agent安装)

Agent安装rpm-ivhzabbix-agent-3.2.4-1.el6.x86_64.rpm安装完成后,zabbixagent端已经安装完成了,zabbixagent端的配置目录位于/e...

Linux基础命令之计划任务(linux计划任务crontab)

一、计划任务1、at只能执行一次语法:at时间服务:atd必须开启123[root@xuegod163~]#/etc/init.d/atdstatus#查看服务状态atd(pid2...

Secure Delivery Center (SDC)安装指南二:Delivery Hub

免费下载SecureDeliveryCenter2015>7月23日软件分发管理神器SecureDeliveryCenter免费技术交流会,MyEclipse原厂商倾力主讲,敬请关注!...

OpenWrt 常用命令及用法!!(openwrt常用功能)

OpenWrt是一个高度可定制的嵌入式Linux操作系统,常用于路由器等网络设备。以下是一些常见的OpenWrt命令及其详细解释和示例操作:一、系统信息相关命令1.`uname-a``u...

Linux 设置定时任务crontab命令(linux定时任务cron表达式)

看了同事的脚本,发现他用了cron来自检自身的那个程序是否崩溃了,这是有多大的不自信才用这种机制的?点击(此处)折叠或打开$sudocat/var/spool/cron/crontabs/ro...

vCenter纳管ESXI主机出错(vsphere esxi)

vCenter纳管主机的大致步骤为:(1)vc和esxi交换证书,确立信任;(2)esxi把自己的资源信息同步到VC,VC建立清单。(3)VC在esxi建立几个操作用户;(4)然后下发...

从选购到安装 小白也能看懂的超全NAS经验分享

0.篇首语Hello大家好,我是KC,上一篇器材和工作流分享的文章里,有小伙伴问我怎么没有提到NAS?其实是因为前段时间碰巧更换了一台新NAS,折腾了一段时间很多内容还没来及整理和汇总,今天就...

手把手教你!如何在 Linux 服务器中搭建 Sentinel 环境?

你在Linux服务器上搭建Sentinel环境时,是不是也遇到过各种报错,要么是启动失败,要么是配置后无法正常访问控制台?看着同事顺利搭建好,自己却一头雾水,别提多着急了!其实,很多互联网大厂...

服务器被暴力破解的解决办法(二)(服务器被攻破严重吗)

上一次,我们说到小王公司服务器遭遇暴力破解,拿到解决方案回公司就开始部署。部署完成后的确起到了一定的效果,不过接下来的一个问题让他很头疼,原来黑客虽然攻入不进系统,但是依旧不依不饶的进行暴力破解。...

取消回复欢迎 发表评论: