我已经与这个问题斗争了 10 天了,现在我真的需要问你们,我希望有人能花 5 分钟的时间来向我解释我做错了什么!
首先,我想为我的网络配置一个路由器,我遵循本教程
我当前的网络:
www --> 路由器 --> 主机 --> vmserver(dhcp/dns) --> dhcpclient
--> 192.168.0.1 --> 192.168.0.2--> 172.22.22.1 --> 172.22.22.21
路由器:192.168.0.1,主机:dhcp,VMserver-2x 网卡-桥接
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
# WAN
auto eth0
iface eth0 inet dhcp
# LAN
auto eth1
iface eth1 inet static
address 172.22.22.1
netmask 255.255.255.0
network 172.22.22.0
broadcast 172.22.2.255
dhcp 现在似乎可以工作了,但我没有连接到互联网,我该怎么办?
我还尝试将以下内容保存到/etc/rc.local
:
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables –table nat -A POSTROUTING -o eth0 -j MASQUERADE
但我仍然无法访问ping
192.168.0.2(主机)或 192.168.0.1(路由器)。
apo@apo-VirtualBox:~$ sudo 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 eth0
link-local * 255.255.0.0 U 1000 0 0 eth1
172.22.22.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
-
ping
192.168.0.2(Host) > 192.168.0.18 (eth0) = yes
192.168.0.2 (Host) > 17.22.22.21 (dhcp) = no
172.22.22.1 (router) > 192.168.0.2 (Host) = yes
172.22.22.1 (router) > 172.22.22.21 (dhcp) = yes
172.22.22.1 (router) > www.google.de > yes
172.22.22.21 (Clientdhcp) > 192.168.0.18 (eht0) = yes
172.22.22.21 (Clientdhcp) > 192.168.0.2 (Host)= no
是的,192.168.0.1(路由器)是我的网关。
apo@apo-VirtualBox:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:97:35:79 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.18/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe97:3579/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:32:e6:ca brd ff:ff:ff:ff:ff:ff
inet 172.22.22.1/24 brd 172.22.22.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe32:e6ca/64 scope link
valid_lft forever preferred_lft forever
我也有 DNS(用于此路由器,因此我可以访问网站)。
答案1
请更精确地说明您的互联网连接。
首先,本教程使用 eth0 上的普通内部网络和私有子网。您的网络设置为 dhcp。您确定可以上网吗?
gw 机器上的 eth0 是否获得 ip 地址?使用以下命令检查
ip a
如果是的话,那么
尝试在 gw 机器上 ping 并解析 google
ping google.com
dig google.com
能用吗?那么你的路由器能提供互联网,问题出在其他地方。
现在通过消除法排除所有可能的错误,就像这样
*1. 我不是 iptables 方面的天才,但我建议先在不激活 iptables 的情况下尝试此操作,以排除规则集的问题。
在这些错误测试的其余部分,Iptables 应该关闭。测试完成后再将其恢复。
2. 从每个主机 ping 到每个主机并查看可以得到什么。
如果你无法 ping 通 gw
3. 看起来这可能是路由问题。
要不然,
4. 路由未通过 DHCP 服务器正确传播。
看了教程,可能是这样,默认网关似乎缺失了。我不知道确切的代码,但我很确定默认网关需要成为 dhcp 包的一部分。
sudo route
在所有主机上执行。
如果路由设置为 ubuntu 机器,那么问题就出在这里,路由和 dhcp 都正常工作。但如果没有,那么问题就出在这里了。
事实确实如此,并提供了附加信息。
172.22.22.21 needs to have 172.22.22.1 as the default route
172.22.22.1 needs to have 192.168.0.1 as the default route
192.168.0.2 needs to have 192.168.0.1 as the default route
192.168.0.1 needs to get DNS and a default route via www-something????
或者至少可能是这样,如果我以正确的方式阅读箭头的话。
改变你的路线,使它们正确且永久,点击此处了解更多信息
别忘了你也需要 DNS :-) 不要搞错这一点。你可能连接到了互联网,但 DNS 可能不起作用。因此,在使用浏览器时,你可能会认为你处于离线状态,但事实并非如此,你的浏览器无法简单地解析 google.com。