小白网-奉贤部落-奉贤免费信息发布平台

查看: 27|回复: 0
打印 上一主题 下一主题

外网访问内网服务器教程(局域网外网访问)

[复制链接]

2万

主题

2万

帖子

7万

积分

论坛元老

Rank: 8Rank: 8

积分
78182
跳转到指定楼层
楼主
发表于 2025-7-26 13:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在阿里云、腾讯云等云平台购买多台服务器时,出于成本考虑,不会为每台服务器配置公有IP。这就带来了一个问题,没有公网IP的服务器无法访问外网。本文介绍了一种可选方案,即让未绑定公网IP的服务器接入外网,前提是所购买的服务器中至少有一台绑定了公网IP。
下面是基本原理和步骤。对网络比较了解的朋友可能一眼就知道是怎么回事了。详细的操作过程后面会介绍。
基本原理是用一个和公网IP绑定的服务器作为代理转发网络。
基本步骤假设有两台服务器:
  • 与公共IP绑定的Master可以访问外部网络。
  • 未绑定公共IP的服务器worker1无法访问外部网络。操作步骤如下:
  • 建立从worker1到master的隧道。
  • 修改worker1的路由表,使用master作为路由
  • 在主服务器上,使用iptables根据worker1的请求进行SNAT转换。本文详细介绍了云平台采购节点的两个例子:
  • 主:内部网IP 192.168.0.197
  • 工作节点:内部网IP 192.168.0.196主节点绑定了公网IP,可以访问外网,工作节点没有绑定公网IP,不能访问外网。
    通过ip route show命令查看两台主机的路由表,有如下记录:
    默认通过192.168.0.253 dev eth0
    也就是说,两台主机都默认使用192.168.0.253作为转发请求的路由,因此我们可以大致猜测网络拓扑如下:
    当然,真实的网络拓扑会比较复杂。这里,只对两台购买的主机进行了一个简化。
    我们现在要做的是,worker1节点可以通过主节点作为代理访问外网。
    步骤1:建立从主节点到worker1节点的隧道。因为两台机器在一个内网,可以互相通信,所以我们可以通过默认的网卡在两台主机之间建立一个隧道。
    在主节点上执行以下命令
    #创建一个ipip类型的虚拟网卡# IP tun add[虚拟网卡名称]mode ipip remote[对等IP地址]local[本地IP地址]IP tunnel addworker 1 _ tunnel mode IP remote 192 . 168 . 0 . 196 local 192 . 168 . 0 . 197#启动新创建的虚拟网卡IP link set worker 1 _ tunnel up#为创建的虚拟网卡绑定IP地址 Peer[对端绑定的IP地址]Dev[本地机器绑定的虚拟网卡的名称]IP Add Add 192 . 168 . 3 . 100 Peer 192 . 168 . 3 . 101 Dev Worker 1 _
    这样,可以执行ip addr show命令来查看下面的附加网卡:
    可以看到网卡绑定了IP: 192.168.3.100。
    类似地,在worker1节点上执行以下命令
    ip隧道添加master_tunl模式ipip remote 192 . 168 . 0 . 197 local 192 . 168 . 0 . 196IP链路设置master _ tunl upIP add add 192 . 168 . 3 . 101 peer 192 . 168 . 3 . 100 dev master _ tunl
    执行ip addr show命令,查看以下网卡是否已添加到worker1节点:
    可以看到网卡绑定了IP: 192.168.3.101。
    现在,让我们验证隧道是否成功建立,并且在主节点上执行ping 192.168.3.101。
    在同一worker1节点上Ping 192.168.3.100。
    如您所见,两台主机已经可以通过设置的IP相互访问,因此两台主机之间的隧道成功建立。
    步骤2:修改worker1节点的路由表,使主节点成为worker1节点默认路由的网关。我们可以首先执行ip route show来检查当前的默认路由。
    此路由显示worker1节点上的默认路由使用192.168.0.253作为默认网关。
    首先,执行ip route del default删除默认网关。
    然后,通过192.168.3.100 dev master _ tunnel设置执行IP route add default,将主节点用作默认网关。注意,创建的master _ tunnel虚拟网卡在这里被用作网络设备。
    步骤3:在主节点上,通过iptables工具,对来自我们创建的隧道的请求进行Snat转换。因为来自worker1的请求的源地址是192.168.3.101,这是一个内部网络地址,所以来自外部网络的请求在没有NAT转换的情况下无法到达worker1节点。
    我们执行以下命令来设置nat
    #我们设置的隧道段是192.168.3.0/24。下面的设置会将源地址在192.168.3.0/24段的请求发送到snat中,#源地址会伪装成出口网卡的IP地址iptables-t NAT-a posting-s192..
    以上步骤全部完成。我们来验证一下。
    在worker1节点ping Baidu.com。
    您可以看到worker1节点可以访问外部网络。
    问题:按照上述步骤操作后,不能访问外网吗?检查主节点是否开启了路由转发功能。该方案要求转发节点开启转发功能。
    打开模式:
  • 您需要修改sysctl.conf文件并配置net.ipv4.ip_forward = 1。
  • 执行sysctl -p使其生效。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-8-21 21:34 , Processed in 0.053906 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表