我的一台服务器(Debian 5.0.6)在同一接口上有两个公共 IP 地址。这过去几个月运行良好,但突然间它使用“错误的”IP 地址进行传出连接。这是一个问题,因为反向查找将不匹配,因此电子邮件会获得垃圾邮件点。
eth0 Link encap:Ethernet Hardware Adresse 00:1b:21:14:8e:9c
inet Adresse:81.169.180.51 Bcast:81.169.180.51 Maske:255.255.255.255
inet6-Adresse: fe80::21b:21ff:fe14:8e9c/64 Gültigkeitsbereich:Verbindung
eth0:0 Link encap:Ethernet Hardware Adresse 00:1b:21:14:8e:9c
inet Adresse:85.214.157.120 Bcast:85.214.157.120 Maske:255.255.255.255
Kernel-IP-Routentabelle
Destination Router Genmask Flags Metric Ref Use Iface
81.169.180.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
0.0.0.0 81.169.180.1 0.0.0.0 UG 0 0 0 eth0
Run Code Online (Sandbox Code Playgroud)
目前它使用 85.214.157.120 进行出站连接。如何让它使用 81.169.180.51?
编辑:255.255.255.255 的网络掩码与托管公司的文档和 DHCP 响应一致。多次调用 /etc/init.d/networking restart 最终会得到正确的出站连接 ip 地址。但这显然不是一个稳定的解决方案。/编辑
编辑 2:为了确保主机路由与我的问题无关,我设置了一个本地测试网络:
eth0 inet Adresse:192.168.0.2 Bcast:192.168.0.255 Maske:255.255.255.0
eth0:0 inet Adresse:192.168.0.3 Bcast:192.168.0.255 …Run Code Online (Sandbox Code Playgroud) 我遇到了一个我无法处理的问题。当我通过 SSH 登录到 VPS 并尝试在该 VPS 上建立 VPN 连接时,VPS 和我的机器之间的 SSH 连接丢失了。我认为这是因为 VPN 设置更改了路由。如何防止?
我一直在阅读Debian 系统管理员手册,我在网关部分看到了这段话:
...请注意,NAT 仅与 IPv4 及其有限的地址空间相关;在 IPv6 中,地址的广泛可用性通过允许所有“内部”地址在 Internet 上直接路由(这并不意味着内部机器可以访问,因为中间防火墙可以过滤流量)大大降低了 NAT 的实用性。
这让我想到... IPv6 仍然有一个私有范围。请参阅:RFC4193。公司真的会用公共地址设置他们所有的内部机器吗?这就是 IPv6 的工作方式吗?
KB299540解释了 Windows XP 如何自动为 IP 路由分配指标:
下表概述了用于为绑定到各种速度的网络接口的路由分配度量的标准。
Run Code Online (Sandbox Code Playgroud)Greater than 200 Mb: 10 Greater than 20 Mb, and less than or equal to 200 Mb: 20 Greater than 4 Mb, and less than or equal to 20 Mb: 30 Greater than 500 kilobits (Kb), and less than or equal to 4 Mb: 40 Less than or equal to 500 Kb: 50
但是,他们似乎在 Windows 7 中更改了算法,因为我的路由表如下所示:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.0.1 …Run Code Online (Sandbox Code Playgroud) 每隔几周我就会收到一封电子邮件(通常是一封非常令人不快的邮件),有时甚至会收到一位 Facebook 用户的电话,他认为我正在“入侵”他们的互联网。他们在进入www.facebook.com后最终出现在我的网站上后得出了这个结论。查看我的服务器日志,每天大约有 1 个人来自不同的 IP 和服务提供商。
我可以从我的服务器日志中确认,他们请求中的HOST: 标头确实包含www.facebook.com。在这一点上,我认为问题一定出在 DNS 上。不知何故,我的 IP 最终被用于 www.facebook.com 查询。这必须很少发生,否则我会看到更多来自该问题的流量。事实上,即使只有一小部分 Facebook 用户访问了我的网站,我的网站也会被夷为平地。
对此的根本原因有什么想法吗?有人见过类似的吗?在这一点上,我能想到的唯一行动方案是为从我的服务器请求 www.facebook.com 的用户创建一个特殊的登录页面,告诉他们稍后再试。
在尝试诊断 Cisco ASA 5520 防火墙的故障转移问题时,我运行了一条到 www.btfl.com 的跟踪路由,令我惊讶的是,一些跃点作为 RFC 1918 地址返回。
需要明确的是,该主机不在我的防火墙后面,并且不涉及 VPN。我必须通过开放的互联网连接才能到达那里。
这怎么/为什么可能?
asa# traceroute www.btfl.com
Tracing the route to 157.56.176.94
1 <redacted>
2 <redacted>
3 <redacted>
4 <redacted>
5 nap-edge-04.inet.qwest.net (67.14.29.170) 0 msec 10 msec 10 msec
6 65.122.166.30 0 msec 0 msec 10 msec
7 207.46.34.23 10 msec 0 msec 10 msec
8 * * *
9 207.46.37.235 30 msec 30 msec 50 msec
10 10.22.112.221 30 msec
10.22.112.219 30 msec
10.22.112.223 30 msec
11 10.175.9.193 30 msec …Run Code Online (Sandbox Code Playgroud) 大家可能都知道,3.6 Linux内核系列已经去掉了ipv4路由缓存,这对多路径路由产生了严重的影响。IPv4 路由代码(与 IPv6 不同)以循环方式选择下一跳,因此从给定源 IP 到给定目标 IP 的数据包并不总是经过相同的下一跳。在 3.6 之前,路由缓存正在纠正这种情况,因为下一跳一旦被选中,就会留在缓存中,并且所有从同一源到同一目的地的其他数据包都经过该下一跳。现在为每个数据包重新选择下一跳,这导致了奇怪的事情:路由表中有 2 个等价默认路由,每个都指向一个互联网提供商,我什至无法建立 TCP 连接,因为初始 SYN 和最终 ACK走不同的路线,
是否有任何相对简单的方法来恢复多路径路由的正常行为,以便按流而不是按数据包选择下一跳?是否有补丁可以使 IPv4 下一跳选择基于哈希,就像 IPv6 一样?或者大家都是怎么处理的?
我在 CentOS 7 服务器上让 TPROXY 与 Squid 和 IPv6 一起工作时遇到问题。我以前使用 NAT 的通用拦截设置,但它仅限于 IPv4。我现在正在扩展设置以包含带有 TPROXY 的 IPv6。
我一直在使用有关该主题的官方 Squid wiki 文章来配置所有内容:
http://wiki.squid-cache.org/Features/Tproxy4
到目前为止,TPROXY 配置似乎适用于 IPv4,没有任何问题。然而,使用 IPv6 时,连接超时且无法正常工作。我将分解设置以便更好地理解。
请注意,所有防火墙和路由规则对于 IPv4 完全相同,唯一的区别是inet6和ip6tables用于在下面的示例中配置基于 IPv6 的规则。
IPv6 连接目前是通过 Hurricane Electric 的 6in4 隧道,这是在 DD-WRT 路由器上配置的,然后分配的前缀通过radvd. Squid 框配置了多个静态 IPv6 地址。
Squid 盒位于它所服务的主 LAN 中。端口 80 上的流量被拦截的客户端(主要是无线客户端)通过我的 DD-WRT 路由器被推送到 Squid 框,并使用以下防火墙和路由规则,改编自 Policy Routing wiki 文章和 DD-WRT wiki
我有以下场景:
计算机 A: 198.51.100.8, 网络掩码255.255.255.0
计算机 B: 203.0.113.9, 网络掩码255.255.255.0
两台计算机在同一个局域网段上;在这两种情况下都没有指定默认网关。
为了让这两台计算机相互通信,我添加了两条静态路由,如下所示:
route add 203.0.113.9 mask 255.255.255.255 198.51.100.8
Run Code Online (Sandbox Code Playgroud)
但是,我更愿意通过指定网络接口而不是指定网关 IP 地址来添加静态路由。
Linux 可以通过使用以下命令来实现这一点:
ip route add 203.0.113.9 dev eth0
Run Code Online (Sandbox Code Playgroud)
在 FreeBSD 中类似:
route add 203.0.113.9/32 -iface fxp0 -cloning
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何使用 Windows 执行此操作。理想情况下,我想做类似的事情:
route add 203.0.113.9 mask 255.255.255.255 if 2
Run Code Online (Sandbox Code Playgroud)
但这只是打印出route命令的用法,这告诉我我做错了。我也尝试使用netsh,它告诉我:
> netsh routing ip add persistentroute 203.0.113.9 255.255.255.255 "Local Area Connection"
Specify the next-hop for non point-to-point interfaces.
Run Code Online (Sandbox Code Playgroud)
有什么想法或建议吗?
更新 …