我在configuration我自己的服务器时遇到问题。 它具有Linux Ubuntu Server Edition 10.04 LTS作为操作系统,两个网卡(eth0和eth1)并使用OpenVPN。
eth0连接到一个连接到3G路由器的交换机(静态IP:192.168.0.254),eth1有时连接到一个(之前的)未知LAN,并使用DHCP获取IP地址。 这些接口中只有一个接口有时间上网,即如果在eth1中插入了电缆,则需要closures3G路由器*。
最终,我希望所有的stream量都通过连接到互联网的接口通过VPN,而且所有的stream量都通过特定的IP地址和端口(比如192.168.45.1:8443)来使用eth1,无论如何。
在build立的过程中,我首先集中在3G部分,将eth1拔出,并设法使用VPN通过eth0与VPN中的其他服务器进行通信。
/ etc / network / interfaces看起来像这样:
auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.254 auto eth1 iface eth1 inet dhcp
然后,我在eth1中插入一根以太网电缆,禁用VPN并closures3G路由器。 eth1所连接的局域网有一个DHCP服务器(192.168.0.254),恰好与连接到eth0(192.168.0.x)的机器具有相同的ip范围。 我绝对不能保证这两个子网在未来会有所不同。
服务器从DHCP服务器获得一个IP(192.168.0.45),但是我也不能ping通它,也看不到DHCP服务器接口上连接的设备列表中的服务器。
在注释掉/ etc / network / interfaces中的网关线路之后,我可以ping通DHCP服务器以及局域网中的任何其他服务器,但是却不能反过来。 另外,它只有在我指定用于ping的接口时才起作用:
ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. From 192.168.0.100 icmp_seq=1 Destination Host Unreachable From 192.168.0.100 icmp_seq=3 Destination Host Unreachable From 192.168.0.100 icmp_seq=4 Destination Host Unreachable ^C --- 192.168.0.254 ping statistics --- 6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5007ms, pipe 3
ping 192.168.0.254 -I eth1
PING 192.168.0.254 (192.168.0.254) from 192.168.0.100 eth1: 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=255 time=0.738 ms 64 bytes from 192.168.0.254: icmp_seq=2 ttl=255 time=0.832 ms 64 bytes from 192.168.0.254: icmp_seq=3 ttl=255 time=0.809 ms 64 bytes from 192.168.0.254: icmp_seq=4 ttl=255 time=0.795 ms --- 192.168.0.254 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2997ms rtt min/avg/max/mdev = 0.738/0.793/0.832/0.044 ms
我不知道为什么它仍然说from 192.168.0.100即使在eth1上ping,因为它不是它的地址。
我已经阅读了关于IP策略路由的内容,似乎是我最终应该实现自己想要的目标(其中包括通过eth1强制来自特定IP /端口的stream量)。 如果我理解正确的话,那么可能无法在局域网中的任何其他计算机上ping服务器,这是因为它是默认路由,它会通过eth0返回整个stream量?
但是,在查看route的输出时,在我看来,默认路由是在eth1上?
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 192.168.0.0 * 255.255.255.0 U 0 0 0 eth1 default 192.168.0.254 0.0.0.0 UG 100 0 0 eth1
我读过这篇文章和链接的文章,并试图调整它,以使eth0中的所有stream量都stream出eth0,eth1stream量相同:
ip route add default dev eth0 table 3G ip route add default dev eth1 table LAN ip rule add fwmark 0x1 table 3G ip rule add fwmark 0x2 table LAN iptables -A OUTPUT -t mangle -o eth0 -j MARK --set-mark 1 iptables -A OUTPUT -t mangle -o eth1 -j MARK --set-mark 2
但是,这是行不通的,事后,我无法再ping通DHCP服务器。 我想我误解了这是如何工作的…
我该怎么办?
另外,我现在已经把VPN部分放在了外面,但是我有点担心它不会像我坦率地期望的那样工作。 路由和VPN如何交互? 我需要确定,如果eth1没有连接,那么强制所有stream量通过eth1的特定ip /路由的路由不能被parsing。
非常感谢您的帮助。 如果需要,我会很乐意提供任何其他信息。 请原谅,如果这个问题已经在其他地方回答了,我没有find它(或者如果它太基本)。
*如果我可以configuration除IP地址子集之外的所有stream量,如果连接了电缆,则将通过eth1,这将更好。
编辑>
eth0现在位于子网10.13.37.0/255.255.255.248,服务器的IP地址为10.13.37.2。
所有stream量现在都通过VPN,但是我希望在端口443上的stream量达到192.168.45.1(192.168.45.0/24是OpenVPN子网),同时仍然使用通过VPN传输的stream量,只使用eth1(因此如果不是,则无法访问连接存在),而端口8443上的192.168.45.1stream量仅使用eth0。 那可能吗?
ip route add default dev eth0 table 3G ip route add default dev eth1 table LAN ip rule add fwmark 0x1 table 3G ip rule add fwmark 0x2 table LAN iptables -A OUTPUT -t mangle -o eth0 --dst 192.168.45.1 --dport 8443 -j MARK --set-mark 1 iptables -A OUTPUT -t mangle -o eth1 --dst 192.168.45.1 --dport 443 -j MARK --set-mark 2
但使用iptraf,我可以看到,当在443或8443上使用某些东西时,只会使用eth1。
谢谢!
你确定要插入正确的电缆吗? 看起来像将192.168.0.x lan的电缆插入到eth1而不是eth0。
如果不是,你是否尝试拔下两根电缆,并尝试只用一根电缆插入电缆? 喜欢:
顺便说一句,改变一个局域网设置! 如果无法更改eth1局域网configuration,请将3G路由器的eth0从192.168.0.x更改为192.168.1.x(至该局域网中的所有计算机),否则将始终存在具有相同IP局域网的故障。