我们想要添加一个额外的网段(LAN2),并且需要LAN1上的一些机器来访问LAN2上的资源。 LAN2上的某些机器也需要访问LAN1和WAN网段上的资源。 LAN1和LAN2之间的网关称为“SRV-01”,一个双归属的Linux服务器。
我无法从LAN2访问LAN2或从LAN2访问LAN1,也不能从LAN2访问WAN。 我想知道如何使LAN1主机和LAN2一起通话,以及如何允许从LAN2机器访问WAN。
故障排除
我使用ping获得以下回复:
IP(来源)---> IP(目标):Ping回复 -------------------------------------------------- ------------------------- 192.168.5.33(LAN1上的客户端)---> 192.168.5.8(SRV-01:eth0):OK 192.168.5.33(LAN1上的客户端)---> 10.0.2.1(SRV-01:eth1):NO 192.168.5.33(LAN1上的客户端)---> 10.0.2.2(SRV-02:eth0):NO *。*。*。*。*(SRV-01)---> 192.168.5.33(LAN1上的客户端):OK *。*。*。*。*(SRV-01) - > 10.0.2.2(SRV-02:eth0):OK 10.0.2.2(SRV-02)---> 10.0.2.1(SRV-01:eth1):OK 10.0.2.2(SRV-02) - > 192.168.5.8(SRV-01:eth0):OK 10.0.2.2(SRV-02)---> 192.168.5.33(LAN1上的客户端):NO
networking拓扑结构
WAN ---(ISP路由器)--- LAN1 ---(SRV-01)--- LAN2 ---(SRV-02)
Internet服务提供商(ISP)路由器提供NAT(两个networking适配器),并充当LAN1的DHCP服务器。 我们没有shell / admin访问这个设备。
SRV-01是双宿主Ubuntu Server 14.04(两个networking适配器),它将充当LAN1子网和LAN2子网之间的网关。
的/ etc /networking/接口
# Loopback auto lo iface lo inet loopback # LAN1 auto eth0 iface eth0 inet static address 192.168.5.8 netmask 255.255.255.0 network 192.168.5.0 broadcast 192.168.5.255 gateway 192.168.5.4 dns-nameservers xxx.xxx.xxx.xxx # LAN2 auto eth1 iface eth1 inet static address 10.0.2.1 netmask 255.255.255.0 network 10.0.2.0 broadcast 10.0.2.255 dns-nameservers xxx.xxx.xxx.xxx
路由
〜$ netstat -r 内核IP路由表 目标网关Genmask标志MSS窗口irtt Iface 默认192.168.5.4 0.0.0.0 UG 0 0 0 eth0 10.0.2.0 * 255.255.255.0 U 0 0 0 eth1 localnet * 255.255.255.0 U 0 0 0 eth0
〜$ ip路由显示 默认通过192.168.5.4 dev eth0 10.0.2.0/24 dev eth1 proto kernel scope链接src 10.0.2.1 192.168.5.0/24 dev eth0 proto内核作用域链接src 192.168.5.8
IP转发
〜$ sudo sysctl -a | grep net.ipv4.ip_forward net.ipv4.ip_forward = 1 net.ipv4.ip_forward_use_pmtu = 0
火墙
在服务器“SRV-01”上,Ubuntu“Uncomplicated FireWall”(UFW)被禁用,所有的iptables链都有一个默认策略设置为ACCEPT目标。 请注意,没有单个数据包通往FORWARD表格尚未…
〜$ sudo ufw状态 状态:不活动
〜$ sudo iptables -L -v | grep政策 链INPUT(策略ACCEPT 369包,28278字节) 链FORWARD(策略接受0包,0字节) 链式输出(策略ACCEPT 187包,19740字节)
SRV-02是带有一个networking适配器的Ubuntu Server 14.04。
的/ etc /networking/接口
#环回
汽车
iface lo inet loopback
#LAN2
iface eth0 inet static
地址10.0.2.2
networking掩码255.255.255.0
networking10.0.2.0
播放10.0.2.255
dns-nameservers xxx.xxx.xxx.xxx
路由
〜$ netstat -r: 内核IP路由表 目标网关Genmask标志MSS窗口irtt Iface 默认10.0.2.1 0.0.0.0 UG 0 0 0 eth0 10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
〜$ ip路由显示 默认通过10.0.2.1 dev eth0 10.0.2.0/24 dev eth0 proto kernel scope链接src 10.0.2.2
火墙
Ubuntu“Uncomplicated FireWall”(UFW)在服务器“SRV-02”上被禁用,所有的iptables链都有一个默认策略设置为ACCEPT目标。
〜$ sudo ufw状态 状态:不活动
〜$ sudo iptables -L -v | grep政策 链INPUT(策略ACCEPT 0包,0字节) 链FORWARD(策略接受0包,0字节) 链OUTPUT(策略ACCEPT 0包,0字节)
我在这里错过了什么? 我想知道什么静态路由应该被添加到SRV-01,并且如果默认的网关被正确configuration…
这个设置有两个问题:
这些问题可以通过将静态路由添加到LAN2到ISP路由器,并在SRV-01上添加LAN2的源NATconfiguration来解决。 但是,这是不可能的,因为没有pipe理员访问ISP路由器。
有两个解决scheme可以解决这个问题:
A.使SRV-01成为LAN1和LAN2主机的完整路由器
。
WAN -> ISP router -> LAN1 -> SRV-01 +-> LAN3 (for hosts originally in LAN1) +-> LAN2 -> SRV-02
基本上,我们正在使SRV-01成为LAN网段的路由器。
10.0.1.0/24 的/ etc /networking/接口:
# LAN1 - to ISP router auto eth0 iface eth0 inet dhcp # we can even use dhcp as the IP address is not really important # - there are no more hosts on LAN1 apart from ISP router and SRV-01 # LAN3 - for hosts originally in LAN1 iface eth1 address 10.0.1.1 netmask 255.255.255.0 # LAN2 iface eth2 address 10.0.2.1 netmask 255.255.255.0
iptables规则,使广域网接入工作:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE
或者,如果您select在eth0上保留SRV-01上的静态IP地址,则可以更改规则(尽pipeMASQUERADE仍然可以使用):
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j SNAT --to-source 192.168.5.8 iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j SNAT --to-source 192.168.5.8
这将使LAN3和LAN2之间的通信成为可能(通过两者的默认网关SRV-01)。 由于采用双源NAT,WAN接入也可以从LAN3和LAN2两种方式工作。
B.使SRV-01成为LAN1的DHCP服务器
这种方法不像上面那样干净,但是稍微简单一些。 它假定您可以禁用ISP路由器上的DHCP
。
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 -d 192.168.5.4 -j SNAT --to-source 192.168.5.8 iptables -t nat -A POSTROUTING -o eth0 -s 10.0.2.0/24 ! -d 192.168.5.0/24 -j SNAT --to-source 192.168.5.8
第一行启用SNAT,以使LAN2主机可以访问ISP路由器本身,第二行禁用LAN2-LAN1访问的SNAT。
同样,这种方法并不像上面那样干净,因为在同一个子网(SRV-01,ISP路由器)中有两台路由器。 当我自己使用这种方法时,我注意到我的第二个路由器(在这种情况下,SRV-01)会发送ICMPredirect到ISP路由器,因为它会看到客户端(LAN1上的主机)和上游路由器(ISP路由器)同一个LAN。 这可能不是所期望的,因为在SRV-01上实施的networking策略可以被规避。
希望有所帮助。