两台Linux主机,通过GRE隧道并且PAT访问对方网络

简介:

一.概述:
在实际工作中可能会出现,在两个不同区域的两台linux能够相互通讯,同时希望中间防火墙放行尽量少的策略,能通过对方linux主机作为跳板访问对方linux能够访问的资源,用vmware和GNS3搭建环境测试了一下,通过GRE隧道和PAT可以实现,现记录下来。(这种方式有背于安全域的思想,在实际工作中除非不得已还是建议少用)
二.基本思路:
A.为了体现效果,只是添加主机路由
----linux1和linux2通过添加对方的主机路由,建立GRE隧道
----linux1访问R2也只是添加主机路由,让其走GRE隧道
B.在linux2上需要配置PAT,将源地址为linux1的tunnel接口地址的做源地址隐藏,否则对方没有linux1的tunnel接口地址的回程路由

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.1/32 -j MASQUERADE

C.如果linux1同网段其他主机需要通过使用这条GRE,需要三个条件:
①linux1开启了路由转发
②linux1侧主机配置了到linux2侧网络的路由,指向linux1(否则流量不会都linux1与linux2直接建立好的GRE隧道)
③linux2上需要配置PAT,将源地址为linux1侧的主机或网络地址做源地址隐藏

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j MASQUERADE

D.通过上述配置完成后,只需linux1和linux2之间放行GRE流量的一条策略,内网的其他访基于TCP/UDP的点到点的访问都畅通无阻

---防火墙放通的不是TCP,也不是UDP,而是GRE,像checkpoint防火墙的service就内置有GRE

---如果只是放通linux1到linux2的GRE流量测量,实际测试,需要linux1先ping linux2的tunnel地址,linux2再ping linux1的tunnel地址,隧道才能建立

E.GRE隧道建立后,用Redhat 6.5测试,过两个小时没有自动断开

三.测试拓扑:

105927414.jpg

四.配置步骤:
A.配置GRE:

----参见之前的博文:http://333234.blog.51cto.com/323234/931805
①添加主机路由:
[root@linux1 ~]# route add –host 192.168.20.1 gw 192.168.10.10
[root@linux2 ~]# route add –host 192.168.10.1 gw 192.168.20.10
②确定是否加载了GRE模块
[root@Linux1 ~]# lsmod |grep ip_gre
[root@Linux2 ~]# lsmod |grep ip_gre
----命令运行没有返回结果,说明没有加载
③加载GRE模块:
[root@linux1 ~]# uname -an
Linux linux1 2.6.9-78.EL #1 Wed Jul 9 15:27:01 EDT 2008 i686 i686 i386 GNU/Linux
[root@linux1 ~]# insmod /lib/modules/2.6.9-78.EL/kernel/net/ipv4/ip_gre.ko
[root@linux2 ~]# uname -an
Linux linux2 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux
[root@linux2 ~]# insmod /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ip_gre.ko
----根据内核版本,选择正确的模块
④配置GRE tunnel接口:
[root@linux1 ~]# ip tunnel add tunnel0 mode gre remote 192.168.20.1 local 192.168.10.1 ttl 255
[root@linux1 ~]# ip link set tunnel0 up mtu 1400
[root@linux1 ~]# ip addr add 172.16.1.1/30 dev tunnel0
[root@linux1 ~]# ip addr add 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
[root@linux1 ~]# ip route add 192.168.20.2/32 dev tunnel0
----添加到需要访问的主机路由,根据实际需要,也可以添加网段
[root@linux2 ~]# ip tunnel add tunnel0 mode gre remote 192.168.10.1 local 192.168.20.1 ttl 255
[root@linux2 ~]# ip link set tunnel0 up mtu 1400
[root@linux2 ~]# ip addr add 172.16.1.2/30 dev tunnel0
[root@linux2 ~]# ip addr add 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0
⑤配置tunnel接口开机启动:
linux1:
vi /etc/init.d/gre.sh ##内容如下:
insmod /lib/modules/2.6.9-78.EL/kernel/net/ipv4/ip_gre.ko
ip tunnel add tunnel0 mode gre remote 192.168.20.1 local 192.168.10.1 ttl 255
ip link set tunnel0 up mtu 1400
ip addr add 172.16.1.1/30 dev tunnel0
ip addr del 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
ip addr add 172.16.1.1/30 peer 172.16.1.2/30 dev tunnel0
ip route add 192.168.20.2/32 dev tunnel0

chmod +x /etc/init.d/gre.sh
echo "/etc/init.d/gre.sh" >> /etc/rc.d/rc.local

linux2:
vi /etc/init.d/gre.sh ##内容如下:
insmod /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ip_gre.ko
ip tunnel add tunnel0 mode gre remote 192.168.10.1 local 192.168.20.1 ttl 255
ip link set tunnel0 up mtu 1400
ip addr add 172.16.1.2/30 dev tunnel0
ip addr del 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0
ip addr add 172.16.1.2/30 peer 172.16.1.1/30 dev tunnel0

chmod +x /etc/init.d/gre.sh
echo "/etc/init.d/gre.sh" >> /etc/rc.d/rc.local

B.Linux2配置PAT:
[root@linux2 ~]# iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.1/32 -j MASQUERADE
----为了防止重启丢失,可以将上面写入到开机启动脚本中
C.Linux2开启路由转发:
[root@linux2 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
五.效果测试:
[root@linux1 ~]# telnet 192.168.20.2
Trying 192.168.20.20...
Connected to 192.168.20.2 (192.168.20.2).
Escape character is '^]'.
User Access Verification
Password: 
R2>show users
Line User Host(s) Idle Location
0 con 0 idle 00:00:45 
* 66 vty 0 idle 00:00:00 192.168.20.1
Interface User Mode Idle Peer Address
R2>




本文转自 碧云天 51CTO博客,原文链接:http://blog.51cto.com/333234/1298882,如需转载请自行联系原作者

相关文章
|
9天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
9天前
|
网络协议 安全 Linux
Linux网络名称空间之独立网络资源管理
Linux网络名称空间是一种强大的虚拟化技术🛠️,它允许用户创建隔离的网络环境🌐,每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用📦和网络安全🔒等领域至关重要。本文将详细介绍在Linux网络名称空间中可以拥有的独立网络资源,并指出应用开发人员在使用时应注意的重点。
|
9天前
|
安全 网络协议 Linux
Linux网络名称空间概述
Linux网络名称空间是操作系统级别的一种虚拟化技术🔄,它允许创建隔离的网络环境🌐,使得每个环境拥有自己独立的网络资源,如IP地址📍、路由表🗺️、防火墙规则🔥等。这种技术是Linux内核功能的一部分,为不同的用户空间进程提供了一种创建和使用独立网络协议栈的方式。本文旨在全方面、多维度解释Linux网络名称空间的概念、必要性和作用。
Linux网络名称空间概述
|
16天前
|
Linux
关于Linux目录访问函数总结
关于Linux目录访问函数总结
13 1
|
17天前
|
Linux
Linux中centos桌面消失网络图标
Linux中centos桌面消失网络图标
13 0
|
7天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
20 6
|
10天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
12天前
|
域名解析 监控 网络协议
Linux网卡与IP地址:通往网络世界的通行证 🌐
探索Linux网卡与IP地址关系,理解网卡作为网络通信的关键。Linux网卡需配置IP地址以实现唯一标识、通信、路由、安全管理和网络服务。无IP地址时,网卡在特定情况如局域网服务、网络监控、无线认证和网络启动可有限工作,但通用功能受限。配置IP地址通常通过`ifconfig`(传统)或`ip`(现代)命令,永久配置需编辑网络配置文件。配置错误如IP冲突、子网掩码错误、默认网关和DNS配置不当可能导致服务中断、网络拥堵、安全漏洞和数据丢失。重视网络配置的正确与安全至关重要。
Linux网卡与IP地址:通往网络世界的通行证 🌐
|
22天前
|
存储 监控 网络协议
linux网络相关
在Linux中,网络管理涉及关键点如配置文件(/etc/network/interfaces, /etc/sysconfig/network-scripts/,或Systemd的`networkd`, `NetworkManager`)、接口管理命令(ifconfig, ip)、网络状态查询(ss, netstat, mtr)、配置相关命令(ifup/ifdown, hostnamectl, nmcli)、设备管理(ethtool, mii-tool)和底层网络包发送流程。常用任务包括编辑配置文件、调整IP设置、管理主机名及使用命令行工具进行网络诊断。如需深入了解特定命令或配置步骤,详细需求。
15 3