我已经在 virtualbox 中的虚拟机上安装并配置了 OpenWRT 路由器,具体如下:这指南。但我为客户机配置了三个接口,而不是两个。
eth1 被设置为用于互联网访问的桥接适配器。
eth0和eth2设置为内部网络接口。
对于那些不熟悉虚拟化的人来说,这与具有 3 个 NIC 的物理机完全相同,其中一个连接到外部局域网,另外两个连接到其他任何东西(计算机、电视盒等)。
问题是我无法正确桥接 eth0 和 eth2。两个接口上都有 DHCP,但其中一个 (eth0) 上只有互联网。此外,没有互联网的那个无法 ping 网关 (192.168.1.1) 或任何其他主机,因此我认为这是一个路由问题或其他问题。
这是路由器的配置:
root@OpenWrt:~# cat /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'lan'
option gateway '192.168.1.1'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
option ip6assign '60'
option _orig_ifname 'eth0 eth2'
option _orig_bridge 'true'
option ifname 'eth0 eth2'
config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'
config interface 'wan6'
option ifname 'eth1'
option proto 'dhcpv6'
config globals 'globals'
option ula_prefix 'fd43:be0a:1a40::/48'
root@OpenWrt:~# cat /etc/config/dhcp
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
option localservice '1'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv6 'server'
option ra 'server'
option ra_management '1'
config dhcp 'wan'
option interface 'wan'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
brctl show 的输出:
root@OpenWrt:~# brctl show
bridge name bridge id STP enabled interfaces
br-lan 7fff.080027133027 no eth0
eth2
和 ifconfig:
root@OpenWrt:~# ifconfig
br-lan Link encap:Ethernet HWaddr 08:00:27:13:30:27
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fd43:be0a:1a40::1/60 Scope:Global
inet6 addr: fe80::a00:27ff:fe13:3027/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6116 errors:0 dropped:0 overruns:0 frame:0
TX packets:6305 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:549793 (536.9 KiB) TX bytes:9147104 (8.7 MiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:13:30:27
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6211 errors:0 dropped:0 overruns:0 frame:0
TX packets:9142 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:642539 (627.4 KiB) TX bytes:13486722 (12.8 MiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:84:95:30
inet addr:192.168.0.44 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe84:9530/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8215 errors:0 dropped:12 overruns:0 frame:0
TX packets:4269 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8732792 (8.3 MiB) TX bytes:455021 (444.3 KiB)
eth2 Link encap:Ethernet HWaddr 08:00:27:FA:D4:2F
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:45 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:516 (516.0 B) TX bytes:2752 (2.6 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:66 errors:0 dropped:0 overruns:0 frame:0
TX packets:66 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5701 (5.5 KiB) TX bytes:5701 (5.5 KiB)
路线输出:
root@OpenWrt:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.1 * 255.255.255.255 UH 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 br-lan
我怎样才能像普通路由器 LAN 接口一样正确桥接 eth0 和 eth2 以进行互联网/LAN 访问?似乎我遗漏了一些东西。
更新: 刚刚查看了 OpenWRT 中的 arp 表,发现 DFGW 192.168.1.1 没有条目。这可能是问题之一吗?
root@OpenWrt:~# arp
IP address HW type Flags HW address Mask Device
192.168.1.147 0x1 0x2 08:00:27:cc:b8:55 * br-lan
192.168.0.44 0x1 0x0 00:00:00:00:00:00 * br-lan
192.168.0.40 0x1 0x2 78:24:af:41:89:b9 * eth1
192.168.1.215 0x1 0x2 08:00:27:df:61:b1 * br-lan
192.168.0.1 0x1 0x2 10:da:43:c3:6e:66 * eth1
192.168.0.1 0x1 0x0 00:00:00:00:00:00 * br-lan
192.168.1.2 0x1 0x2 08:00:27:c3:58:80 * br-lan
答案1
刚刚自己解决了这个问题。结果发现我对整个解决方案想得太多了。只需要一个接口。我还将主机的物理接口分配给了虚拟机。因此,我没有为虚拟机的内部网络创建一个桥接器,而是对所有东西都使用了相同的接口。现在,所有虚拟机和物理机都共享同一个 LAN,连接到 OpenWRT,分配 IP 并充当 DNS 转发器。不知道我之前怎么没有想到这个解决方案。