通过DHCP获取GRE隧道的IP

我需要创build一个从客户端到服务器的GRE隧道。 这是我的设置。

build立:

________________________________ _________________________________ ______________________________ |Server | | |Router | | |Client | | |-------- | |-------- | |-------- | | wan (244.244.244.1/24) -|------|- wan (244.244.244.20/24) | | | | | | | | | | | | lan (192.168.178.0/24) -|------|- lan (192.168.178.22/24) | | | --------------------------------- | | | | | | | to_client (10.10.10.1/24) -|---------------------------------------------|- to_server | -------------------------------- ------------------------------ 

它基本上工作,但我不能在客户端的“to_server”隧道接口上获得IP,因为dhclient不支持这种types的接口。 没有isc-dhcp包似乎支持它。 我通常使用isc-dhcp-server作为DHCP服务器,但需要使用dnsmasq进行这个特殊的设置。

 $ dhclient -v to_server Unsupported device type 778 for "to_server" 

有没有其他的方法/程序从DHCP服务器请求IP?

从这里到最后的附加信息:

服务器和客户端都是运行debian jessie的LXContainer,这些容器的主机是Ubuntu 16.04。 路由器有一个客户的入口作为“暴露的主机”

奇怪的是,我能ping通服务器的隧道接口地址。

 $ ping -c3 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. 64 bytes from 10.10.10.1: icmp_seq=1 ttl=63 time=1.38 ms 64 bytes from 10.10.10.1: icmp_seq=2 ttl=63 time=0.703 ms 64 bytes from 10.10.10.1: icmp_seq=3 ttl=63 time=0.784 ms --- 10.10.10.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.703/0.957/1.386/0.306 ms 

ifconfig服务器(剥离到最低)

 wan Link encap:Ethernet Hardware Adresse d6:d1:57:b5:a9:47 inet Adresse:244.244.244.1 Bcast:0.0.0.0 Maske:255.255.255.0 inet6-Adresse: fe80::d4d1:57ff:feb5:a947/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 to_client Link encap:UNSPEC Hardware Adresse F4-F4-F4-01-30-30-3A-30-00-00-00-00-00-00-00-00 inet Adresse:10.10.10.1 PzP:10.10.10.1 Maske:255.255.255.0 UP PUNKTZUPUNKT RUNNING NOARP MTU:1476 Metrik:1 

ifconfig客户端(剥离到最低)

 lan Link encap:Ethernet Hardware Adresse 82:63:16:cc:12:88 inet Adresse:192.168.178.22 Bcast:0.0.0.0 Maske:255.255.255.0 inet6-Adresse: fe80::8063:16ff:fecc:1288/64 Gültigkeitsbereich:Verbindung UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 to_server Link encap:UNSPEC Hardware Adresse C0-A8-B2-16-30-30-3A-30-00-00-00-00-00-00-00-00 UP PUNKTZUPUNKT RUNNING NOARP MTU:1476 Metrik:1 

隧道接口

 $ ip tunnel show to_client to_client: gre/ip remote 244.244.244.20 local 244.244.244.1 ttl 255 $ ip tunnel show to_server to_server: gre/ip remote 244.244.244.1 local 192.168.178.22 ttl 255 

dnsmasq.conf

 # wan-network dhcp-range=wan,244.244.244.25,244.244.244.30,2m # tunnel-network dhcp-range=to_client,10.10.10.2,10.10.10.10,2m # netmask /24 dhcp-option=1,255.255.255.0 # this is the router dhcp-host=9c:c7:a6:XX:XX:XX,244.244.244.20,2m # disable DNS port=0 

正如你从ip tunnel show输出中看到的,你的隧道types是gre / ip ,所以它是一个三层隧道。

这意味着您只能发送IP数据包,但是BOOTP(DHCP协议下的协议)使用在该types链路上不可用的第2层function(如广播)。

要知道为什么你能够ping你应该检查ip route的输出和“跟随”的path。 请注意,TTL是63,所以在Client10.10.10.1的path中应该有一个路由器。