文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux与网络设备 GRE配置经验总结

2024-12-03 16:37

关注

本文转载自微信公众号「新钛云服」,作者侯明明。转载本文请联系新钛云服公众号。   

GRE 介绍及应用场景

GRE(General Routing Encapsulation),即通用路由封装,是一种三层技术。它的最大作用是可以对某些网络层协议的报文进行封装,如对路由协议、语音、视频等组播报文或IPv6报文进行封装。同时,也能够与 IPSec 结合,解决 GRE 的安全问题。

本文主要介绍 Linux 与 网络设备(华为防火墙、华为路由器、Juniper SRX防火墙)对接 GRE 的配置方法。

GRE 报文

如下图所示,GRE 是按照 TCPIP 协议栈进行逐层封装,新的 IP 头会封装在原有的 IP 头中,然后运送出去,封装操作是通过 Tunnel 接口完成的,GRE 协议经过 Tunnel 口时,会将接口的封装协议设置为 GRE 协议。

GRE 的配置场景

CentOS 7.6 与 华为防火墙建立 GRE 隧道

拓扑图

实现目标

配置

配置接口与路由

  1. [root@CentOS ~]# vim /etc/sysconfig/network-scripts/ifcfg-tun0 
  2. DEVICE=tun0 
  3. BOOTPROTO=none 
  4. ONBOOT=yes 
  5. DEVICETYPE=tunnel 
  6. TYPE=GRE 
  7. PEER_INNER_IPADDR=172.16.1.2 
  8. PEER_OUTER_IPADDR=100.1.1.1 
  9. MY_INNER_IPADDR=172.16.1.1 
  10. MY_OUTER_IPADDR=200.1.1.1 
  11.  
  12. [root@CentOS ~]# vim /etc/sysconfig/network-scripts/route-tun0 
  13. 192.168.1.0/24 via 172.16.1.2 
  14.  
  15. [root@CentOS ~]# ifup tun0 

Iptables 配置

  1. # 安装 iptables 管理服务 
  2. [root@CentOS ~]# yum install iptables-services 
  3.  
  4. # 在 INPUT 方向要放行对端的公网地址 
  5. [root@CentOS ~]# iptables -I INPUT -s 100.1.1.1/32 -j ACCEPT 
  6.  
  7. # 配置源地址转换 
  8. [root@CentOS ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 200.1.1.1 
  9.  
  10. # 端口映射 
  11. [root@CentOS ~]# iptables -t nat -A PREROUTING -d 200.1.1.1 -p tcp --dport 8080 -j DNAT --to-dest 192.168.1.10:8080 
  12.  
  13. # 保存 iptables 
  14. [root@CentOS ~]# service iptables save 

开启 ipv4 转发

  1. [root@CentOS ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
  2.  
  3. [root@CentOS ~]# sysctl -p 

本次以华为 USG6300E 系列防火墙为例:

配置接口,并添加到安全区域

  1. interface Tunnel0 
  2. ip address 172.16.1.2 255.255.255.0 
  3. tunnel-protocol gre 
  4. source 100.1.1.1 
  5. destination 200.1.1.1 
  6.  
  7. # 将接口添加到安全区域内 
  8. [USG6300E] firewall zone tunnel 
  9. firewall zone name tunnel 
  10. set priority 75 
  11. add interface Tunnel0 

配置安全策略

在实际的实施中,可以将策略收紧一些,根据需求限制源和目的地址。

如果条件允许的话,可以先将默认安全策略设置为 permit,待调通之后,再修改安全策略:

  1. security-policy 
  2. rule name tunnel_out 
  3. source-zone trust 
  4. destination-zone tunnel 
  5. action permit 
  6.   
  7. rule name tunnel_in 
  8. source-zone tunnel 
  9. destination-zone trust 
  10. action permit 
  11.  
  12. # 放行 tunnel 到 untrust 的流量 
  13. rule name tunnel_untrust 
  14. source-zone tunnel 
  15. destination-zone untrust 
  16. action permit 

配置策略路由

  1. [USG6300E]policy-based-route 
  2. policy-based-route 
  3. rule name PBR 
  4. source-zone trust 
  5. source-address 192.168.1.0 mask 255.255.255.0 
  6. action pbr egress-interface Tunnel0 

配置 No-NAT

设置去往隧道的流量不使用源地址转换:

  1. [USG6300E-policy-nat]dis th 
  2. nat-policy 
  3. rule name SNAT 
  4. source-zone tunnel 
  5. destination-zone untrust 
  6. source-address 192.168.1.0 mask 255.255.255.0 
  7. action no-nat 

验证

主要有如下几个测试方法:

  1. 在 CentOS 或 防火墙 ping 对端的隧道地址;
  2. 使用 192.168.1.0/24 网段内的设备 traceroute 公网地址,查看经过的路径以确认是否经过隧道转发。

Ubuntu 18 与 华为路由器建立 GRE 隧道

拓扑图

实现目标

配置

netplan 配置

  1. root@ubunt18demo:~# vim /etc/netplan/00-installer-config.yaml 
  2. network: 
  3.   ethernets: 
  4.     ens3: 
  5.       addresses: 
  6.         - 200.1.1.1/24 
  7.       gateway4: 200.1.1.254 
  8.       nameservers: 
  9.         addresses: 
  10.             - 114.114.114.114 
  11.   tunnels: 
  12.       tun0: 
  13.         mode: gre 
  14.         local: 200.1.1.1 
  15.         remote: 100.1.1.1 
  16.         addresses: [ 172.16.1.1/24 ] 
  17.         routes: 
  18.         - to: 192.168.1.0/24 
  19.           via: 172.16.1.2 
  20.  
  21. # 可以先执行 netplan try 验证一下,如果没有断掉的话可以按 ENTER 确认配置 
  22. # 如果和主机 SSH 中断,可以等待 120S 会自动恢复 
  23. root@ubunt18demo:~# netplay try 

iptables 设置

Ufw 是 Ubuntu 的防火墙配置工具,底层还是调用 iptables 处理的:

  1. # 启用 ufw 
  2. ufw enable 
  3.  
  4. # 放行 SSH 
  5. ufw allow ssh 
  6.  
  7. # 放行 GRE 对端进入的流量 
  8. ufw allow from 100.1.1.1/32 
  9.  
  10. # 配置 nat 映射 
  11. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 200.1.1.1 
  12. iptables -t nat -A PREROUTING -d 200.1.1.1 -p tcp --dport 8080 -j DNAT --to-dest 192.168.1.10:8080 
  13.  
  14. # 将 ufw 设置为开机自启动 
  15. systemctl enable ufw 

开启 ipv4 转发:

  1. echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
  2.  
  3. sysctl -p 

华为路由器

以 AR1200 系列路由器为例:

  1. interface Tunnel0/0/1 
  2. ip address 172.16.1.2 255.255.255.0 
  3. tunnel-protocol gre 
  4. source 100.1.1.1 
  5. destination 200.1.1.1 
  1. # 配置 ACL 
  2. [AR1200] acl number 3000 
  3. [AR1200-acl-adv-3000] rule 10 permit ip destination 192.168.1.0 0.0.0.255 
  4.  
  5. # 配置流分类 
  6. [AR1200] traffic classifier togretunnel 
  7. [AR1200-classifier-togretunnel] if-match acl 3000 
  8.  
  9. # 配置流行为 
  10. [AR1200] traffic behavior togretunnel 
  11. [AR1200-behavior-togretunnel] redirect ip-nexthop 172.16.1.1 
  12.  
  13. # 配置流策略 
  14. [AR1200] traffic policy togretunnel 
  15. [AR1200-trafficpolicy-vlan10] classifier togretunnel behavior togretunnel 
  16.  
  17. # 在内网口调用流策略 
  18. [AR1200] interface gigabitethernet 1/0/1 
  19. [AR1200-GigabitEthernet3/0/0] traffic-policy togretunnel inbound 

验证

验证方法同 CentOS 与 华为防火墙建立 GRE 隧道一致。

Juniper SRX 防火墙的 GRE 配置

SRX 防火墙的出接口如果使用了 route-instances,那么配置 tunnel 口时,一定要注意增加 route-instance destination,如下所示:

  1. set interfaces gr-0/0/0 unit 0 tunnel source 100.1.1.1 
  2. set interfaces gr-0/0/0 unit 0 tunnel destination 200.1.1.1 
  3. set interfaces gr-0/0/0 unit 0 tunnel routing-instance destination EXAMPLE-INSTANCE 
  4. set interfaces gr-0/0/0 unit 0 family inet address 172.16.1.2/24 

另外策略路由在 SRX 中称为 FBF,还有 No-NAT的配置示例如下:

  1. # 配置 firewall filter,匹配需要进入隧道的流量 
  2. set firewall filter to-GreTunnel term 1 from source-address 192.168.1.0/24 
  3. set firewall filter to-GreTunnel term 1 then routing-instance EXAMPLE-INSTANCE 
  4. set firewall filter to-GreTunnel term 3 then accept 
  5.  
  6. set routing-options rib-groups global import-rib EXAMPLE-INSTANCE.inet.0 
  7.  
  8. # 配置去往 Gre Tunnel 的路由 
  9. set routing-instances EXAMPLE-INSTANCE instance-type forwarding 
  10. set routing-instances EXAMPLE-INSTANCE routing-options interface-routes rib-group inet global 
  11. set routing-instances EXAMPLE-INSTANCE routing-options static route 0.0.0.0/0 next-hop 172.16.1.1 
  12.  
  13. # 在内网口调用 firewall filter 
  14. set interfaces reth2 unit 0 family inet filter input to-GreTunnel 
  15.  
  16. # 去往隧道口的流量不做 SNAT 
  17. set security nat source rule-set Gre-snat from zone Trust 
  18. set security nat source rule-set Gre-snat to zone EXAMPLE-INSTANCE 
  19. set security nat source rule-set Gre-snat rule to-cn2-no-nat match source-address 192.168.1.0/24 
  20. set security nat source rule-set Gre-snat rule to-cn2-no-nat match destination-address 0.0.0.0/0 
  21. set security nat source rule-set Gre-snat rule to-cn2-no-nat then source-nat off 

CentOS 的策略路由

如果有使用 Linux 作为中转的场景,也就是说华为防火墙和 Linux 建立 GRE 隧道,Linux 又和其他设备建立,由 Linux 做中转流量,这种场景下,可以在 Linux 配置策略路由,如下所示:

  1. # 临时配置,重启后会消失,可以作为调试使用 
  2. ip rule add from 192.168.1.0/24 table 100 pref 10 
  3. ip route add 0.0.0.0/0 via 200.1.1.254 table 100 
  4.  
  5. # 将配置持久化 
  6. vim /etc/sysconfig/network-scripts/rule-eth0 
  7. from 192.168.1.0/24 table 100 pref 10 
  8.  
  9. vim /etc/sysconfig/network-scripts/route-eth0 
  10. default via 172.16.1.1 dev tun0 
  11.  
  12. # 验证命令 
  13. ip rule show 
  14. ip route show table 100 

总结

GRE虽然配置还比较简单, 在实际项目中会经常用到。 Linux 通常需要系统工程师配置,而网络设备通常由网络工程师配置,如果对接有问题,则需要沟通协调,就比较浪费时间。如果一个工程师能够完成两种设备的配置,并进行排错,那么效率将会提高很多。

 

来源:新钛云服内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯