我有
eth0:0 192.168.2.10 (for bgp network announce, no vlan, alias on eth0) eth0.1 192.168.3.20 (for bgp session 1,vlan3 transport to bgp router) eth0.2 192.168.4.30 (for bgp session 2,vlan4 transport to bgp router)
默认路由由斑马(192.168.3.1或192.168.4.1 – 故障切换)
当外部IP(192.168.1.100)试图连接到192.168.2.10 – >应答的数据包通过192.168.3.1(其中源IP为192.168.3.20)。 这工作正确。 但是我想源地址是192.168.2.10。 主要问题是当星号在192.168.2.10上运行时,客户端试图从192.168.1.100注册sip – >从192.168.3.20发送回答,而软件包被丢弃在远端。
如何解决/解决这个问题? 还是有其他方式的configuration界面? 主要思想是切换路由为192.168.2.10如果一个bgp会话closures。
rp_filter=0 on all interfaces
如果我把这样的东西:
iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j SNAT --to-source 192.168.5.58
这也不起作用。
所有的问题是星号在这个scheme后面是nat。 如果我在所有接口上运行它 – > SIP客户端连接上192.168.4.30和192.168.3.20 IP的确定,但不是192.168.2.10之一。
在Linux上与Linux上的环回不一样。
在Linux上分配给任何地址的地址必须仅用于机器向其自身发送stream量; 内核会认为任何包含一个源IP的数据包与一个分配给火星的数据包相匹配,并将在入口处被丢弃 – 这是硬编码的行为。 内核偶然也使用lo来发送stream量到自己的任何其他接口上的IP(例如,如果eth0有10.0.0.1并且你ping了它,lo上的tcpdump会显示回显请求和回复)
对于思科types的回送接口,使用“虚拟”内核模块 – 请注意,假模块也可以作为stream量路由到它的通道(如思科的null0),因此您分配的任何地址它应该是/ 32,因为显然没有什么东西会在虚拟接口上连接。
在lo接口上放置非环回地址势必造成怪异。 我build议你把eth0附加192.168.2.10。