安全是有分量的

阿里云高防ip_香港高防ip哪家的速度快_限时优惠

2022-01-14 04:30栏目:智能汇

阿里云高防ip_香港高防ip哪家的速度快_限时优惠

我们必须解决非公共网络设置的路由问题。我不会详细说明我们为什么选择这样做,假设这是我们设想的解决问题的最简单的方法。

我们有两台服务器具有完全相同的IP地址(192.168.1.50),我们希望它们都能看到具有相同IP地址(192.168.1.60)的路由器,两者都有默认路由,例如192.168.1.1,出于某种原因,我们不希望更改路由配置。我们希望能够使用客户端子网中的两个不同IP地址(10.10.10.100用于访问服务器1,10.10.10.200用于访问服务器2)来询问两台服务器,路由器本身将使用另一个IP地址(10.10.10.10)来访问。除此之外,服务器可以在客户端启动连接,这样做时,他们应该在客户端获得相应的IP(10.10.10.100和10.10.10.200)。下图说明了整个设置。

与基本路由器设置相比发现的问题:

连接服务器1的接口vr1与连接服务器2的vr2具有相同的IP地址服务器1和服务器2具有相同的IP地址客户端必须能够连接到每台服务器,而无需更改服务器的路由表服务器必须连接到客户端的一些固定主机

为了实现这一点,我们在OpenBSD上使用带pf和路由域的双向NAT。类似的配置可以在GNU/Linux上使用iptables和策略路由以及iproute2实用程序完成。

一个路由域有自己的路由表,每个网络接口只能在一个路由域中。默认情况下,所有内容都是路由域id 0。可以使用Ifconfig更改它所属的接口路由域。OpenBSD的IFCONFIG(8)手册页摘录

rdomain route id使用指定的路由id。不同路由中的接口域是分离的,不能直接传递流量在彼此之间。默认情况下,所有接口都属于路由表0.

因此,美国高防cdnhostloc,防御ddos和cc攻击,首先我们将每个接口配置为在其自己的路由域中,路由域1中的vr1、路由域2中的vr2和默认路由域0中。如上所述,vr0设置为3个IP地址,因此转发到服务器的2个地址被定义为别名。以下是3个接口配置文件

/etc/hostname.vr0

inet 10.10.10 255.255.255.0的内容inet别名10.10.10.100 255.255.255.0inet别名10.10.10.200 255.255.255.0

/etc/hostname.vr1

rdomain 1inet 192.168.1.60 255.255.255.0!路由-T1添加默认192.168.1.60

/etc/hostname.vr2

rdomain 2inet 192.168.1.60 255.255.255.0!路由-T2添加默认192.168.1.60

我稍后将解释路由条目。如ifconfig手册页"不同路由域中的接口是分离的,不能直接在彼此之间传递流量"中所述,需要特定的pf规则来允许使用rtable关键字、pf.CONF(5)手册页摘录

rtable用于为路由查找选择备用路由表。仅在路由查找发生之前有效,即过滤入站。

如上所述,入站规则可能会使用rtable关键字指定匹配的数据包跳转到不同的路由域,指定目标路由域。

/etc/pf.conf摘录:

#biNAT和路由域遍历客户端->服务器在vr1上匹配nat到vr1在vr2上匹配nat到vr2在vr0上匹配10.10.10.100 rdr到192.168.1.50 rtable 1匹配vr0至10.10.10.200 rdr至192.168.1.50 RTTable 2

nat to规则是进行SNAT的标准规则。rdr to规则是使用rtable指定目标路由域进行DNAT的标准规则。省略它会使数据包重定向到接口vr0上的192.168.1.50,因为它属于默认路由域0(我们没有测试它,但它可能根本不起作用,pf.conf手册页说重定向不能通过数据包到达的接口将数据包反射回来)。这很好,但现在我必须解释hostname.vr1和hostname.vr2文件中的路由条目。当路由器在接口vr0上接收到以10.10.10.100作为目的地、以10.10.10.1作为源的数据包时会发生什么:

匹配规则执行DNAT,将目的地地址重写为192.168.1.50,在DNAT表中创建一个条目并跳转到路由域1。匹配规则执行SNAT,将源地址重写为192.168.1.60(vr0的地址),并在SNAT表中创建一个条目。数据包按预期发送到服务器1服务器1也按预期响应192.168.1.60路由器在vr1上得到响应,它点击DNAT和SNAT表,进行转换,但OpenBSD的内核发出ICMP目的地不可访问错误

发生了什么?响应数据包被翻译回,其目的地是10.10.10.1,发起通信和路由的域1对此目的地没有路由,这就是它发出ICMP错误的原因。这是因为路由域遍历是在内核路由查找之后完成的。为了避免向路由域1中添加到自身的假默认路由。自身可以是vr1的地址192.168.1.60或环回接口的地址。后者似乎是更好的选择(或者更符合逻辑),但它需要更多的配置。环回接口lo0在路由域0中,如上所述,一个接口只能在一个路由域中,因此,需要为路由域1和2创建第二个环回接口lo1和第三个lo2。Pf还需要额外的配置来允许lo1和lo2,并且不可能在lo1上使用设置跳过,如何学会ddos防御,因为Pf在命中此规则时会退出,并且不会完成SNAT/DNAT/rdomain跳转。由于这种额外的配置,我们选择了前一种可能性。最后,个人博客高防cdn哪个比较好,这并不重要,因为内核不再抱怨无法到达的目的地,数据包返回路由域0并使用其路由表(因此从不在路由域1中使用默认路由)。