Linux IP Forwarding路由转发实验

2024-05-01 01:36

本文主要是介绍Linux IP Forwarding路由转发实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux 路由转发功能

Linux 操作系统具备路由转发功能,路由功能是指 Linux 操作系统提供的路由管理和转发功能,它允许 Linux 主机在网络中正确地转发数据包,并确保数据包能够达到其目的地。

出于安全考虑,Linux系统默认是禁止数据包转发的,会丢掉不属于本机IP的数据包。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。

在这里插入图片描述

要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward,这个参数指定了Linux系统当前对路由转发功能的支持情况,其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

net.ipv4.ip_forward设置为1后,会开启路由功能,Linux会像路由器一样对不属于本机的IP数据包进行路由转发。

下面基于 vmware workstation 虚拟机搭建测试环境,验证linux路由转发功能。

测试环境准备

整体拓扑结构如下:
在这里插入图片描述

准备三台linux 虚拟机,其中 Server-B 作为路由器,分配两块网卡,连接并转发 Server-AServer-C 本地网络的流量。

服务器名称网卡LAN区段IP地址OS版本角色
Server-Aens33lan1192.168.1.2Ubuntu 22.04客户端
Server-Bens33lan1192.168.1.1Ubuntu 22.04路由器
ens37lan2192.168.2.1
Server-Cens33lan1192.168.2.2Ubuntu 22.04客户端

配置说明

  • 虚拟机 Server-A 网卡配置为LAN区段模式,指定为 lan1
  • 虚拟机 Server-B 网卡配置为LAN区段模式,网卡1指定 lan1,网卡2指定 lan2
  • 虚拟机 Server-A 网卡配置为LAN区段模式,指定 lan2

说明: vmware workstation 网卡的LAN区段特性,不同LAN区段为隔离网络,仅相同LAN区段的网卡能够通信,无法与其他LAN区段或宿主机进行直接通信。

Server-A 虚拟机网络适配器配置:
在这里插入图片描述
Server-B 虚拟机网络适配器配置:
在这里插入图片描述
在这里插入图片描述
Server-C 虚拟机网络适配器配置:
在这里插入图片描述

测试目的:通过为Server-B启用路由转发功能,实现处于不同网络的Server-A 和 Server-C能够相互通信。

虚拟机网卡配置

Server-A 网卡配置

root@Server-A:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:ethernets:ens33:addresses:- 192.168.1.2/24routes:- to: defaultvia: 192.168.1.1version: 2

Server-A 默认路由

root@Server-A:~# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:0f:26:b9 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.1.2/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe0f:26b9/64 scope link valid_lft forever preferred_lft forever
root@Server-A:~# 
root@Server-A:~# ip route
default via 192.168.1.1 dev ens33 proto static 
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.2 

Server-B 网卡配置

root@Server-B:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:ethernets:ens33:addresses:- 192.168.1.1/24ens37:addresses:- 192.168.2.1/24version: 2

Server-B 默认路由

root@Server-B:~# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:50:56:3a:b4:d8 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.1.1/24 brd 192.168.1.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::250:56ff:fe3a:b4d8/64 scope link valid_lft forever preferred_lft forever
root@Server-B:~# 
root@Server-B:~# ip a show ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:18:d6:5b brd ff:ff:ff:ff:ff:ffaltname enp2s5inet 192.168.2.1/24 brd 192.168.2.255 scope global ens37valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe18:d65b/64 scope link valid_lft forever preferred_lft forever
root@Server-B:~# 
root@Server-B:~# ip route
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.1 
192.168.2.0/24 dev ens37 proto kernel scope link src 192.168.2.1 

Server-C 网卡配置

root@Server-C:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:ethernets:ens33:addresses:- 192.168.2.2/24routes:- to: defaultvia: 192.168.2.1version: 2

Server-C 默认路由

root@Server-C:~# ip a show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:9b:ff:f8 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 192.168.2.2/24 brd 192.168.2.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe9b:fff8/64 scope link valid_lft forever preferred_lft forever
root@Server-C:~# 
root@Server-C:~# ip route
default via 192.168.2.1 dev ens33 proto static 
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.2 

启用路由转发功能

在 Server-B 上启用路由转发功能

cat <<EOF | sudo tee /etc/sysctl.d/ip_forward.conf
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system

存在net.ipv4.ip_forward = 1 说明启用成功。

root@Server-B:~# sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

测试路由转发功能

测试 Server-A 访问 Server-C

root@Server-A:~# ping 192.168.2.2 -c  4
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=63 time=2.04 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=63 time=1.04 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=63 time=2.58 ms
64 bytes from 192.168.2.2: icmp_seq=4 ttl=63 time=1.03 ms--- 192.168.2.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.025/1.671/2.584/0.667 ms

测试 Server-C 访问 Server-A

root@Server-C:~# ping 192.168.1.2 -c  4
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=63 time=2.42 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=63 time=2.66 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=63 time=0.915 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=63 time=3.32 ms--- 192.168.1.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.915/2.330/3.322/0.880 ms

在Server-B启用路由转发功能后,处于两个不同网络的 Server-A 与 Server-C 能够成功相互通信。

这篇关于Linux IP Forwarding路由转发实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950412

相关文章

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决