服务器设置路由转发

背景介绍

A服务器有公网,b,c,d没有公网,A,B,C,D之间可以相互通信。如何让B,C,D也能访问公网呢?

解决方案:

方案一:将A设置成代理服务器,B,C,D的请求都从A服务器代理请求发送。(后续写教程)

方案二:将A服务器路由改成路由转发,有数据包过来同步转发给B , C, D

本文章主要讲解如何通过方案二如何实现A电脑如何进行转发数据包,实现B,C,D局域网上的主机可以通过A可以进行连接外网。需要掌握仅主机模式,和nat模式这两种网络。本次操作均用虚拟机进行展示。

操作步骤

    1. 知识点回顾(NAT模式地址转换模式、仅主机模式)

NAT模式

我们只需要弄懂,NAT模式下,这三点。

  1. 宿主机和虚拟机是如何通信的?
  2. 宿主机如何连接外网的?
  3. 虚拟机是如何与外界网络进行通信的。

宿主机是如何连接外网

宿主机直接连接真实主机的网卡,直接从主机网卡出去

宿主机和虚拟机是如何进行通信的?

此时虚拟机会虚拟生成一张网卡VMware Network Adapter VMnet8网卡,这张网卡有两个功能一个功能是作为一个网桥,将宿主机和虚拟机两个不同网段的网络进行连接。同时也具有交换机的功能,让虚拟机形成一个局域网。

因此虚拟机和宿主机之间的通信是通过这个虚拟机网卡进行通信的。

主机访问虚拟机的网络链路是:主机-> 虚拟机网卡VMnet8->VMnet8虚拟机交换机->虚拟机

虚拟机是如何进行与主机通信的

虚拟机是不能通过网桥访问到主机的网卡的,他们走的路线是:虚拟机->VMnet8虚拟机交换机->虚拟NAT设备->主机网卡->主机。这里用到的是NAT转化设备,将其转成宿主机的地址进行在与外界进行通信。

为了实现上述中的网络环境。

将A主机添加两张网卡,一张网卡设置为仅NAT模式模拟虚拟主机接入外网,可以上网。再接入一张网卡,设置为仅主机模式。设置仅主机模式是为了能够和局域网下的虚拟机可以进行通信。

1.将虚拟机A设置成路由转发。

echo "1" > /proc/sys/net/ipv4/ip_forward


//查看有没有设置成功
cat /proc/sys/net/ipv4/ip_forward

2.B虚拟机添加网关

因此B添加到A的网关

route add default gw 192.168.169.130

查看路由

route -n

此时仍然不能上网,但是主机之间可以互相通信?

这里有个很隐藏点,为了验证是否实现路由转发功能,可以再添加一个自定义Vmnet2网卡,

同样的道理

这是可以进行通信centosA,和centosB。说明了具备了A已经有了路由转发功能,但是,A没有将C的私网地址发送出去。因此需要添加一个NAT转换规则,将ens33网关地址进行转换成A的私有地址。

sudo iptables -t nat -A POSTROUTING -o ens33 -j SNAT --to-source 192.168.128.140

  1. sudo
    1. 以管理员权限运行命令,因为 iptables 需要 root 权限才能修改网络规则。
  2. iptables
    1. Linux 系统中用于配置防火墙规则的工具。
  3. -t nat
    1. 指定操作的表(table)为 nat 表。nat 表用于网络地址转换(NAT)相关的规则。
  4. -A POSTROUTING
    1. -A 表示追加(Add)一条规则。
    2. POSTROUTING 是 nat 表中的一个链(chain),用于处理数据包在离开本机之前的修改操作(即路由后的操作)。
  5. -o ens33
    1. -o 指定输出接口(output interface),即数据包将从哪个网络接口发出。
    2. ens33 是网络接口的名称,通常是主机的物理网卡或虚拟网卡。
  6. -j SNAT
    1. -j 指定跳转的目标(即动作)。
    2. SNAT 是源地址转换(Source NAT),用于修改数据包的源 IP 地址。
  7. --to-source 192.168.128.140
    1. --to-source 是 SNAT 动作的参数,用于指定新的源 IP 地址。
    2. 192.168.128.140 是新的源 IP 地址,数据包离开 ens33 接口时,其源地址会被修改为该地址。

这条命令的作用是:

  • 当数据包从 ens33 接口发出时,将其源 IP 地址修改为 192.168.128.140
  • 这通常用于以下场景:
    • 虚拟机或容器通过主机的 ens33 接口访问外部网络时,外部网络看到的数据包源地址是 192.168.128.140,而不是虚拟机或容器的私有 IP 地址。
    • 实现多台设备共享一个公网 IP 地址(即 NAT 功能)。

查看规则

iptables -t nat -L -v -n
  1. iptables
    1. Linux 系统中用于配置防火墙规则的工具。
  2. -t nat
    1. 指定操作的表(table)为 nat 表。nat 表用于网络地址转换(NAT)相关的规则。
  3. -L
    1. 列出(List)指定表中的所有规则。
  4. -v
    1. 显示详细信息(verbose),包括数据包和字节计数。
  5. -n
    1. 以数字形式显示 IP 地址和端口号(不进行域名解析)

添加成功可以进行通信连接外网

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值