社区首页 >问答首页 >基于IPsec的Juniper SRX100与Fortigate 100 D之间的GRE

基于IPsec的Juniper SRX100与Fortigate 100 D之间的GRE
EN

Network Engineering用户
提问于 2016-02-29 11:41:16
回答 3查看 5.7K关注 0票数 2

我需要帮助配置Fortigate和Juniper设备之间的VPN设置(GRE )。

我的拓扑如下:

我需要做的是在设备之间创建一个基于路由的IPSec隧道来封装另一个隧道(GRE隧道)。我有类似的设置之间的Juniper和思科2921,它工作得很好,但我有真正的困难设置这一个,因为我没有必要的专业知识与任何一个。

不知道是不是应该这样,但是.

  • 我希望IPSec隧道介于203.0.113.1和203.0.113.2之间;
  • 我希望GRE隧道从回环接口启动,并与远程端点的回环(10.255.255.1和10.255.255.2)通信,我有通过IPSec隧道(st0.0和ipsec接口)到达的路由;
  • 我希望GRE接口分别具有IP地址192.168.0.1和192.168.0.2 (并且在这些地址之间运行OSPF,配置不包括在内)。

Juniper侧

接口配置:

代码语言:javascript
代码运行次数:0
复制
interface fe-0/0/0 {
    unit 0 {
        family inet {
            address 203.0.113.1/24;
        }
    }
}

interface lo0 {
    unit 0 {
        family inet {
            address 10.255.255.1/32;
        }
    }
}

interface st0
    unit 0 {
        family inet;
    }
}

interface gr-0/0/0 {
    unit 0 {
        clear-dont-fragment-bit;
        tunnel {
            source 10.255.255.1;
            destination 10.255.255.2;
            allow-fragmentation;
        }
        family inet {
            mtu 1400;
            address 192.168.0.1/30;
        }
    }
}

IKE配置(编辑安全ike):

代码语言:javascript
代码运行次数:0
复制
proposal ike-prop {
    authentication-method pre-shared-keys;
    dh-group group5;
    authentication-algorithm sha1;
    encryption-algorithm aes-256-cbc;
    lifetime-seconds 28800;
}
policy ike-policy {
    mode main;
    proposals test-ike-prop;
    pre-shared-key ascii-text "test999";
}
gateway ike-gw {
    ike-policy test-ike-policy;
    address 203.0.113.2;
    dead-peer-detection;
    nat-keepalive 10;
    local-identity inet 203.0.113.1;
    remote-identity inet 203.0.113.2;
    external-interface fe-0/0/0.0;
    version v1-only;
}

IPSec配置(编辑安全ipsec):

代码语言:javascript
代码运行次数:0
复制
proposal test-ipsec-prop {
    protocol esp;
    authentication-algorithm hmac-sha1-96;
    encryption-algorithm aes-256-cbc;
    lifetime-seconds 3600;
}

policy ipsec-policy {
    perfect-forward-secrecy {
        keys group5;
    }
    proposals ipsec-prop;
}

vpn ipsec-vpn {
    bind-interface st0.0;
    df-bit clear;
    ike {
        gateway ike-gw;
        proxy-identity {
            local 10.255.255.1/32;
            remote 10.255.255.2/32;
            service junos-gre;
        }
        ipsec-policy ipsec-policy;
    }
    establish-tunnels immediately;
}

路由配置:

代码语言:javascript
代码运行次数:0
复制
routing-options {
    static {
        route 10.255.255.2/32 next-hop st0.0;
        #Default route exists, but not included
    }
}

防火墙配置:

但是,不包括防火墙配置,允许所有通信量如下:

  • 从GRE到IPSec接口
  • 从IPSec到GRE接口
  • 从Wan1到IPSec接口
  • 从IPSec到Wan1接口
  • 从回程返回到IPSec接口
  • 从IPsec到回溯接口
  • 从GRE到保护网络
  • 从保护网络到GRE

Fortigate侧

接口配置:

代码语言:javascript
代码运行次数:0
复制
config system settings
    set allow-subnet-overlap enable
end

config system interface
    edit "wan1"
        set vdom "root"
        set ip 203.0.113.2 255.255.255.0
        set allowaccess ping
        set type physical
        set weight 1
        set alias "WAN"
    next
    edit "ipsec"
        set vdom "root"
        set ip 203.0.113.2 255.255.255.255
        set type tunnel
        set remote-ip 203.0.113.1
        set interface "wan1"
    next
    edit "gre"
        set vdom "root"
        set ip 192.168.0.2 255.255.255.255
        set allowaccess ping ssh
        set type tunnel
        set remote-ip 192.168.0.1
        set mtu 1400
        set interface "ipsec"
    next
end

config system gre-tunnel
    edit "gre"
        set interface "ipsec"
        set local-gw 203.0.113.2
        set remote-gw 203.0.113.1
    next
end

IKE配置:

代码语言:javascript
代码运行次数:0
复制
config vpn ipsec phase1-interface
    edit "ike"
        set interface "wan1"
        set proposal aes256-sha1
        set peertype one
        set mode aggressive
        set localid "203.0.113.2"
        set remote-gw 203.0.113.1
        set peerid "203.0.113.1"
        set psksecret test999
    next
end

IPSec配置:

代码语言:javascript
代码运行次数:0
复制
config vpn ipsec phase2-interface
    edit "ipsec"
        set dst-addr-type ip
        set keepalive enable
        set phase1name "ike"
        set proposal aes256-sha1
        set protocol 47
        set src-addr-type ip
        set dst-start-ip 203.0.113.1
        set keylifeseconds 3600
        set src-start-ip 203.0.113.2
    next
end

路由配置:

代码语言:javascript
代码运行次数:0
复制
config router static
    edit 2
        set device ipsec
        set dst 10.255.255.1 255.255.255.255
    next
end

防火墙配置:

但是,不包括防火墙配置,允许所有通信量如下:

  • 从GRE到IPSec接口
  • 从IPSec到GRE接口
  • 从Wan1到IPSec接口
  • 从IPSec到Wan1接口
  • 从回程返回到IPSec接口
  • 从IPsec到回溯接口
  • 从GRE到保护网络
  • 从保护网络到GRE

请告诉我这种设置是否有效,这里有什么问题吗?我使用本地/远程标识,可以让IPSec出现,显示在安全关联表中,但是,永远无法获得GRE接口并具有可点击的远程地址。我也不能通过IPSec隧道回传遥控器。

如果有任何调试/输出需要故障排除,只需张贴注释。谢谢!

也许你有什么好的资源来安排这件事?无法在Fortinet/Juniper网站上找到任何有助于在这两个供应商之间安装的信息。你绝对可以找到一个与思科建立。

注意:使用的地址不是公共的,而是分配给在示例代码中使用的:https://www.rfc-editor.org/rfc/rfc5735

EN

回答 3

Network Engineering用户

发布于 2017-09-29 14:40:03

恕我直言,不。站起IPSec连接。然后,如果您需要在IPSec对等点后面的其他端点之间创建一个GRE隧道,比如从一对计算机或其他地方创建,只需在这些设备上配置GRE隧道即可。

您不希望或不需要在IPSec设备本身上创建额外的GRE隧道(因为您已经有了一个隧道-- IPSec隧道)。

票数 1
EN

Network Engineering用户

发布于 2017-09-29 09:44:43

Juniper不能在一个接口中终止IPSEC和GRE,其中fortigate具有称为子网重叠的特性,这在SRX中是不存在的。

唯一的方法是分别在fortigate和SRX设备上创建一个回环,并进行尝试。这方面的文章不多(很难找到)。

我已经给出了一个线索。

很乐意帮忙..。

致以敬意,

拉吉夫R

票数 0
EN

Network Engineering用户

发布于 2017-10-08 04:57:04

IPSEC不支持多播,因此RIP、OSPF和EIGRP是不可能的。如果要求排除了这一点,那么IPSEC就足够了。

票数 0
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/28293

复制
相关文章
C++11模板:如何判断类中是否有指定名称的成员变量?
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/51113805
10km
2019/05/25
4.2K0
动态调用类中的方法(无)(有)参数
1、Type类,方法用Invoke调用的时候就 使用null:表示该方法是无参数的
静心物语313
2020/03/24
2.6K0
powershell: 判断PSObject中是否有指定property的靠谱方法
如何判断一个PSObject中是否定义指定名称的属性,下面的代码中举出了三个方法 $test=New-Object PSObject -Property @{ compiler=$null
10km
2018/01/03
1.1K0
less中的可变参数
当前我们的混合的参数都需要传递,如果都需要全部传递可以使用 @arguments,@arguments 代表着就是你传入的所有参数,less 中的 @arguments 和 js 中的 arguments 一样,可以拿到传递进来的所有形参,这个时候你就不用足一的赋值,如下
程序员 NEO
2023/09/29
2090
less中的可变参数
Sass中的可变参数
SASS 中的可变参数和 LESS 中也一样,只不过由于 SASS 不是使用 JS 实现的,所以不能直接在混合中使用 arguments,必须通过 $args... 的格式来定义可变参数,然后通过 $args 来使用,注意点:和 LESS 一样可变参数必须写在形参列表的最后:
程序员 NEO
2023/09/29
1890
Sass中的可变参数
【C++11】移动赋值 | 新的类功能 | 可变参数模板
C++98中 没有移动赋值和移动构造 ,只有参数为左值 的赋值重载(operator=)和拷贝构造
lovevivi
2023/10/17
1980
【C++11】移动赋值 | 新的类功能 | 可变参数模板
C/C++开发基础——可变参数与可变参数模板
1.如果可变参数的参数类型相同,可以使用标准库中的initializer_list。
Coder-ZZ
2023/09/04
7170
C/C++开发基础——可变参数与可变参数模板
【JavaSE】可变参数的基本使用
可变参数 1. 基本概念 Java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法 就可以通过可变参数实现 2. 基本语法 访问修饰符 返回类型 方法名(数据类型... 形参名) { } 3. 快速入门案例 VarParameter01.java 看一个案例 类 XdrMethod,方法 sum 【可以计算 2 个数的和,3 个数的和 , 4. 5, ...】 public int sum(int n1, int n2){ return n1 + n2; }
兮动人
2021/12/30
4400
Java 开发中可变参数个数的方法 原
在 J2SE 5 以前,可以使用数组来实现向一个方法中传入个数可变的参数的目的,比较典型的应用场景就是 main 方法。
LeoXu
2018/08/15
1.1K0
python中函数的可变参数
print(1,2,"hello","刘金玉编程","编程创造城市",end="$$$")
刘金玉编程
2019/07/30
2.2K0
小朋友,你是否有很多的 GC ?
GC 即 Garbage Collection,中文 意思“垃圾回收”,在有GC之前,我们手动去管理内存,如果你忘记标记某一处已经不再使用的内存,那么这块内存将永远不会被系统回收,也就是常说的 “内存泄露”。
代码宇宙
2023/02/23
4020
Logback排除指定包/类/方法日志输出
Logback排除指定包或者类或者方法的日志输出 在logback-spring.xml中添加如下代码,可以一直点下去 <!--包--> <logger name="com.newbie.dao" level="OFF"></logger> <!--类--> <logger name="com.newbie.dao.NbDdiMonitorDao" level="OFF"></logger> <!--方法--> <logger name="com.newbie.dao.NbDdiMonitorDao.upd
4xx.me
2022/06/10
4.6K0
Thymeleaf 指定多个路径作为模板目录
今天自己想在开发平台上增加一套前端的界面,突然想到自己还没有一套用来做展示用的cms系统,为了把cms的模板和后台的模板分开存放,试验了下怎么样设置多个模板路径,代码在此:
前Thoughtworks-杨焱
2021/12/07
1.6K0
可变数据类型不能作为python函数的参数
当使用列表作为参数传入函数时,实际上是引用传递。也就是传入的是实际参数的地址,而place=b也就是指向相同的地址。比如以下的:
西西嘛呦
2020/10/28
1.6K0
实例方法,类方法和静态方法的区别_python中类的所有实例方法
第一个参数是”self”,表示实例对象,通过它传递实例的属性和方法。只能由实例调用
全栈程序员站长
2022/09/20
2K0
【C++】C++11——新的类功能|default、delete|可变参数模板|emplace
在C++98中,如果要限制某些函数的生成,把该函数设置成private,并且只声明不实现
平凡的人1
2023/10/15
3480
【C++】C++11——新的类功能|default、delete|可变参数模板|emplace
可变参数的函数
C语言允许定义参数数量可变的函数,这称为可变参数函数(variadic function)。这种函数需要固定数量的强制参数,后面是数量可变的可选参数。其中,强制参数必须至少一个,可选参数数量可变,类型可变,可选参数的数量由强制参数的值决定。 C 语言中最常用的可变参数函数例子是 printf()和 scanf()。这两个函数都有一个强制参数,即格式化字符串。格式化字符串中的转换修饰符决定了可选参数的数量和类型。 可变参数函数格式:int fun(int a,...)
用户7272142
2023/10/11
2300
IDEA使用模板自动生成类注释和方法,解决方法注释在接口中或普通类的方法外使用模板注释不带参数的情况
参考: idea 自动生成类注释和方法注释的实现步骤-脚本之家 使用groovy脚本生成idea方法注释参数格式对齐
全栈程序员站长
2022/09/27
1.4K0
IDEA使用模板自动生成类注释和方法,解决方法注释在接口中或普通类的方法外使用模板注释不带参数的情况
【Go 语言社区】Golang 可变参数的使用
func main() { Func1(1,2,3,4) } func Func1(args ...int) { for _, res := range args { fmt.Println(res) } Func2(args...) Func3(args[2:]...) } func Func2(args ...int) { fmt.Println("----")
李海彬
2018/03/19
8090
点击加载更多

相似问题

是否有一种使用可变模板作为参数的方法?

25

是否有一种方法可以部分匹配可变模板参数包?

21

模板类的朋友operator<<,带有附加的默认模板参数

13

使用可变模板作为类和方法的参数

15

重载模板类的朋友operator<<

59
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文