我有一个正在运行原始IP套接字的应用程序,此套接字的目标由通过“ip route add”命令安装的路由控制。 这些路由可以在套接字的生命周期中改变(例如,因为下一跳改变) 简化,可以说我有2个接口, eth0和eth1 。 我也有一个通过eth0的默认路由。 原始套接字的端点是例如10.10.10.10 ,eth1的地址是100.0.0.1 ,我在原始套接字的生命期内执行以下操作: ip -f inet route delete 10.10.10.10 ip -f inet route add 100.0.0.2 dev eth1 ip -f inet route add 10.10.10.10/32 via 100.0.0.2 dev eth1 现在我所看到的是,在这个操作之后,stream量通过eth1正确地传送了几秒钟,然后在短时间内(通过eth0)出错了(不到半秒),然后再次正确(就我所能看到的永久)。 所以我的主要问题是:有没有人可以解释一下这里可能会出错? 我之前提到的序列之后尝试添加ip route flush cache ,但没有做任何事情。 我目前困惑,为什么交通有时会下降。 我认为这可能是路由命令中的计时问题,或者其他一些触发器在一秒钟内禁用路由,但是我的选项已经不多了。 我尝试在我的原始套接字上使用SO_BINDTODEVICE选项,但是这并没有什么帮助,主要的区别是,当stream量出错时,根本不会发送出去,因为它会覆盖错误的接口。 不过,我所希望的是,这将设置errno类似E_CANNOTROUTE(这不存在),所以我可以抓住这个,然后重试发送数据包。 它目前不这样做,但有没有办法,我可以赶上这样的失败? 我(几乎)完全控制系统和运行套接字的应用程序。 我所知道的一个解决scheme将是不使用L3原始套接字,而是使用AF_PACKET套接字(也可以自己做ARP / ND),但我宁愿不要进入。 更新 通过改变这个路由改变行为,我改善了我的系统的行为。 当我必须更新下一跳时,我现在查看已经安装的路由并采取以下操作: 如果不在那里,我只是安装新的路线,并跳过删除。 […]
首先,我有一个特殊的IPv6地址分配给我的专用服务器,只有1. A :: 1/128之一。 但我可以分配地址给eth0(例如:: 2/128,:: 3/128等)。 现在我想在该服务器上运行LXC容器,但我希望他们成为一等公民,我希望他们有一个自己的IPv6地址。 与IPv4的LXC工作正常。 我可以启动一个容器,从它平静的世界。 我有一个桥接设备叫做lxcbr0 。 老实说,我不知道该怎么做。 在具体的LXCconfiguration我有('前缀'代表我分配,以及前缀): lxc.network.ipv6 = prefix::3/128 lxc.network.ipv6.gateway = prefix::2 # iffy, not sure this is correct 在主机上,我configuration了sysctl来使用转发: net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.eth0.forwarding = 1 现在我失去了踪迹。 我想我需要分配一个IP桥。 我已经为它分配了前缀:: 2/128,这个我在上面的LXCconfiguration中使用。 在'接口'中: iface lxcbr0 inet6 static address prefix::2 netmask 128 # use arp proxy? Read that somewhere. post-up […]
我们正在从一组地址迁移到另一组地址,都是/ 24,并尝试尽量减less迁移过程中的停机时间。 理想情况下,我们将在closures旧电路的同时运行一段时间。 总共有4个互联网连接,每对都运行BGP。 然后,每个路由器都被路由到思科ASA,思科ASA连接到在该子网上连接了多个服务器的交换机。 在上图中,左边部分是今天所存在的,我正在寻找右边。 我连接了ASA,并且在10.20.20.0/24子网上都有这两个,第一个ASA接口为10.20.20.1,第二个ASA接口为10.20.20.254。 这里的问题是,所有的服务器都有10.20.20.1作为它们的默认路由,我真的很想把stream量路由回去。就是说,internet – > ASA#2 – > server – >返回ASA#2。 就像今天一样,当然,它会将响应发送回ASA#1,并且找不到它的翻译。 我是否以错误的方式去做这件事? 编辑:我应该提到,外面的#1和外面的#2有不同的公共/ 24networking。 我们正在从ISP提供的块迁移到我们自己的块。
我的服务器无法ping /到达任何其他外部。 ping6适用于我的本地fe80 :: 468 …地址以及2a01:4f8 … ,但不适用于fe80 :: 1 ! 错误/故障/问题: ip neigh show fe80::1 dev eth0 FAILED ping6 2001:4860:4860:8888 ( Google ) PING 2001:4860:4860:8888(2001:4860:4860:8888) 56 data bytes From 2a01:4f8:202:43d5::2 icmp_seq=1 Destination unreachable: Address unreachable ping6 -I eth0 fe80 :: 1 PING fe80::1(fe80::1) from fe80::468a:5bff:fe2c:3d6a eth0: 56 data bytes From fe80::468a:5bff:fe2c:3d6a icmp_seq=1 Destination unreachable: […]
简短的问题:我通常是一个Linuxpipe理员,但需要为学生项目设置一个Win2k8 R2服务器。 服务器在根服务器上作为虚拟机运行,并分配有公共互联网IP。 此外,我需要一个VPN服务器来访问服务器上运行的一些服务。 我设法build立一个工作的VPN网关通过路由和RAS服务,分配给私人子网192.168.88.0/24与接口“内部”在192.168.88.1侦听客户端IP。 另外我设置了外部接口作为NAT接口。 所以我可以连接到VPN服务器,获得一个IP分配,服务器另外做NAT,我可以通过VPN连接访问互联网。 我另外需要的唯一的事情是,我可以通过内部IP访问服务器本身(例如客户端192.168.88.2,服务器192.168.88.1),因为我想访问一些我不喜欢暴露给互联网的服务,限制它们连接到VPN客户端。 有没有人有提示,我错过了哪些configuration能够通过VPN连接访问服务器? 编辑:VPN客户端得到分配私人子网与子网掩码255.255.255.255 IP,我想这可能是我不能访问私人IP地址的服务器,虽然它在相同的networking范围内的原因。 任何想法如何改变这一点? 我在路由和RAS服务中定义了一个静态地址池,但是我不能在那里更改networking掩码。 编辑2:我无法从客户端访问服务器,但我可以从服务器(ping,HTTP)完全访问客户端。 我想这与防火墙configuration有关。 在此先感谢,Mathias
我使用DD-WRT固件在两个独立的站点上安装了路由器,并在两者上都安装了OpenVPN。 一旦连接客户端可以ping服务器局域网上的计算机,但是服务器不能ping客户端局域网上的IP。 我在路由器的shell执行ping命令(所以我不必远程到本地机器等) 我在两个站点都禁用了防火墙(这是在testingconfiguration中完成的)。 我还在这里错过了什么吗? 我使用的configuration如下。 我真的很感激任何帮助/指导。 我是否还需要将路由推送到VPN服务器ips? 192.168.2.0是客户端子网 192.168.4.0是服务器子网 谢谢 Sever.conf server 192.168.5.0 255.255.255.0 client-config-dir /tmp/openvpn/ccd route 192.168.2.0 255.255.255.0 push "route 192.168.4.0 255.255.255.0" push "route 192.168.2.0 255.255.255.0" client-to-client dev tun0 proto udp keepalive 10 120 dh /tmp/openvpn/dh.pem ca /tmp/openvpn/ca.crt cert /tmp/openvpn/cert.pem key /tmp/openvpn/key.pem management port management localhost 5001 启动命令 mkdir -p /tmp/openvpn/ccd echo "iroute […]
我注意到在我的路由输出RHEL6(和大多数2.6.x系列Linux),每个接口我看到在我的内核路由表中创build以下路由: 169.254.0.0 0.0.0.0 255.255.0.0 U 1018 0 0 bond0 169.254.0.0 0.0.0.0 255.255.0.0 U 1019 0 0 bond1 169.254.0.0 0.0.0.0 255.255.0.0 U 1020 0 0 bond2 我的理解是,当自动地址configuration失败时(当dhcp中断时)使用链路本地地址。 当DHCP失败时,系统将自己分配一个可用的链路本地地址(或多或less)。 在你的家伙的经验,这些是必要的吗? 我在networking中使用手动/静态IP分配,所以没有自动地址configuration。 因此,自动地址configuration不会失败。 我可以安全地移除这些路线吗? 还是有其他的黑客/理由,我应该让这些家伙? 迭戈
我试图在具有两个网关的Linux路由器上负载均衡来自内部局域网的stream量。 最初我去iproute执行没有按预期平衡负载,原因是路由被caching。 现在我正在使用iptables来标记使用CONNMARK的每个新连接,然后添加规则以通过不同的网关路由这些标记的连接。 Eth0 – LAN,Eth1 – ISP1,Eth2 – ISP2 以下是我正在使用的脚本, #!/bin/bash echo 1 >| /proc/sys/net/ipv4/ip_forward echo 0 >| /proc/sys/net/ipv4/conf/all/rp_filter # flush all iptables entries iptables -t filter -F iptables -t filter -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -t filter -P INPUT ACCEPT […]
我的机器上有四个networking: 192.168.20.0/24有线(仅在工作时连接) 无线192.168.20.0/24(只在家中连接) 192.168.132.0/24 VMWare的NAT 192.168.238.0/24 VMWare的主机 我的OS X(10.5)似乎更喜欢在machinename.local的无线networking上使用VMWare的NAT。 有什么方法可以改变closuresVMWare接口的偏好设置吗?
我在stackoverflow问这个问题,但得到了很less的意见: https : //stackoverflow.com/questions/2284917/route-web-requests-to-different-servers-based-on-subdomain 也许这更适合这个人群。 这里又是为了方便: 我有一个平台,用户可以使用子域创build一个新的网站。 将有成千上万的这些,例如abc.mydomain.com,def.mydomain.com。 希望如果我们成功了几十万。 我需要能够将这些域路由到不同的IP来指向特定的应用服务器。 我现在在数据库中有这个映射。 这里有哪些最佳实践和推荐技术? 我看到一些选项: 使用通配符CNAME条目进行DNS设置,以便所有请求都转到单个IP,其中可能有两台使用检测信号(用于故障转移)的计算机知道如何在数据库中查找IP,然后执行httpredirect到相应的应用程序服务器。 这对我来说似乎笨重和缓慢。 运行我自己的DNS服务器,可以通过编程方式进行pipe理,以便在创build新站点时添加DNS条目。 我们还将网站移动到不同的应用程序服务器,所以我需要能够近乎实时地更新DNS条目。 思考任何人? 谢谢。 Update2 :我已经设置了外部通配符DNS指向一个HAProxy Web服务器,它的任务是将请求路由到后端服务器。 映射存储在我们的内部PowerDNS服务器。 现在的问题是如何让HAProxy服务器(或其他)使用内部DNS的值,而不是一些configuration文件或访问列表? – 更新:根据下面的一些build议,似乎反向代理服务器(S)是要走的路。 由于我将重新平衡域 – >服务器映射,因此需要立即运行,而DNS解决scheme上的TTL可能会成为问题。 任何关于使用软件的build议,考虑这个域 – > IP数据存储在一个数据库,我需要这是性能?