我建立了一个虚拟实验室,其配置如下:
为了使实验室正常运行,我使用脚本创建了以下接口,为服务器机器启用端口转发以便访问互联网。
此命令触发自主持人机器
tunctl -t tap0 -u myuser
ip link set up dev tap0
brctl addbr br0
brctl addif br0 tap0
ip link set up dev br0
ip addr add 10.1.1.1/24 dev br0
ip route add 10.1.1.0/24 dev br0
tunctl -t tap1 -u myuser
tunctl -t tap2 -u myuser
tunctl -t tap3 -u myuser
ip link set up dev tap1
ip link set up dev tap2
ip link set up dev tap3
brctl addbr br1
brctl addif br1 tap1
brctl addif br1 tap2
brctl addif br1 tap3
ip link set up dev br1
ip addr add 10.1.2.1/24 dev br1
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -A FORWARD -i eth0 -o br0 -j ACCEPT
iptables -A FORWARD -i br0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
使用 virtualbox gui 我设置了以下接口来服务和客户端:
服务器 -> tap0 , tap1 [桥接网络]
client1 -> tap2 [桥接网络]
client2 -> tap3 [桥接网络]
然后编辑/etc/网络/接口和解析配置文件
服务器
*# cat /etc/network/interfaces*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.1.1.2
netmask 255.255.255.0
up route add default gw 10.1.1.1 dev eth0
auto eth1
iface eth1 inet static
address 10.1.2.2
netmask 255.255.255.0
*# cat /etc/resolv.conf*
domain
search
nameserver 192.168.2.194
客户 1
*# cat /etc/network/interfaces*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.1.2.3
netmask 255.255.255.0
up route add default gw 10.1.2.2 dev eth0
*# cat /etc/resolv.conf*
domain
search
nameserver 10.1.2.2
客户 2
*# cat /etc/network/interfaces*
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.1.2.4
netmask 255.255.255.0
up route add default gw 10.1.2.2 dev eth0
*# cat /etc/resolv.conf*
domain
search
nameserver 10.1.2.2
采用以下配置:
我可以用服务器访问互联网,
我可以通过 ssh 访问网络中的任何机器
我无法使用客户端 1 和客户端 2 机器访问互联网......
您能帮我设置一些路由规则来解决这个问题吗?
答案1
并且,您在哪台机器上运行第一组指令(以 ? 开头的指令)
tunctl
在主机上?是的,当然,我没有说,因为我认为这很明显......
不一定:至关重要iptables 规则
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
哪个应该服务器上的,却在(无用的!)主机上。同上
echo 1 > /proc/sys/net/ipv4/ip_forward
最后,(但与上述无关)声明
nameserver 10.1.2.2
在两个客户端上都有点可疑:你在服务器上设置了 DNS 服务器吗?在此之前,你最好使用
nameserver 8.8.8.8
或类似的东西。
我不能说这些是仅有的您的配置中有错误。有太多无用的东西(仅由虚拟接口构成的桥接器???主机上的桥接器?VBox 会处理这个问题!类似这样的语句
nameserver 192.168.2,194
我用逗号代替点来代替网络调试(我只能说我上面提到的这些点应该得到纠正,但很可能需要进行额外的调试。当你这样做时,一定要使用tcpdump
检查数据包流在哪里中断,因为这使得网络调试比我可以从这里到那里,但不能从......。