3、步骤三:取得正确的 IP 参数
什么叫『取得正确的 IP 参数』啊?还记得我们谈过如果要顺利的连接上 Internet 的话, 必须要可以跟 public IP 进行沟通才行,而与 public IP 取得沟通的方法,在台湾比较常见的有 ADSL, Cable modem, 学术网络, 电话拨接等等。在 CentOS 当中,我们可以透过修改 /etc/sysconfig/network-scripts/ifcfg-eth0,或者是利用 rp-pppoe 来进行拨接, 无论如何,你就是得要连接到某个 ISP 去就是了~
在你确认所有的区网没有问题之后,参考一下第四章的介绍,连上之后,立即以 ifconfig 看看有没有捉到正确的 IP 啊? 在台湾如果使用 ADSL 联机的话,你应该可以顺利的取得一组正确的 Public IP 参数的!
曾有国外的华人朋友来信说到,他们使用 ADSL 拨接之后竟然取得一组 Private IP , 害他们没有办法架站!他们想请问这样的情况是否合理。如果你熟悉路由相关的概念之后, 当然会知道:『这当然合理!』,因为你取得的 IP 只是为了要连接到 ISP 去而已, 而 ISP 与你的主机当然可以透过 Private IP 来联机啊!如果是这样的话,那么你就肯定无法架站了!
另外,最常发现无法顺利取得 IP 的错误就是『BOOTPROTO』这个设定值设定错了!因为 static 与 dhcp 协议所产生的 IP 要求是不一样的啊!还记得吧!要特别留在 ifcfg-eth0 里面的设定参数喔!另外,如果你是使用 ADSL 拨接的, 但是老是无法拨接成功,那么建议你可以这样试看看:
4、步骤四:确认路由表的规则
如果你已经顺利取得正确的 IP 参数的话,那么接下来就是测试一下是否可以连上 Internet 啊! 鸟哥建议你可以尝试使用 ping 来连连看 Hinet 的 DNS 主机,也就是 168.95.1.1 那部机器啦!
[AppleScript] ı鿴ƴ
[root@www ~]# ping -c 3 168.95.1.1
如果有响应,那就表示你的网络『基本上已经没有问题,可以连到 Internet 了!』, 那如果没有响应呢?明明取得了正确的 IP 却无法连接到外部的主机,肯定有鬼!呵呵!没错! 还记得我们在网域内资料的传输可以直接透过 MAC 来传送, 但如果不在区网内的数据,则需要透过路由,尤其是那个预设路由 (default route) 来帮忙转递封包吧! 所以说,如果你的 public IP 无法连接到外部 (例如 168.95.1.1) ,可能的问题就出在路由与防火墙上面了。假设你没有启动防火墙,那问题就缩小到剩下路由啰~ 那路由的问题如何检查?就用 route -n 来检查啊!
假设有个使用 ADSL 拨接的 Linux 主机,他的路由表如下,你觉得出了什么问题?
Destination Gateway Genmask Flags Metric Ref Use Iface
59.104.200.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.1.2 0.0.0.0 UG 0 0 0 eth0
答:
仔细看到上面的路由输出,第一条是 ppp0 产生的 public IP 接口,第二条是 eth0 的内部网域接口,再看到最后一条的 0.0.0.0/0.0.0.0 这个预设路由,竟然是内部网域的 eth0 为 gateway ?不合理,最大的问题应该是出在 ifcfg-eth0 里面不小心设定了『GATEWAY=192.168.1.2』 所致,解决的方法为:
取消 ifcfg-eth0 内 GATEWAY=192.168.1.2 那一行,(该行亦可能出现在 /etc/sysconfig/network 内)
重新启动网络 /etc/init.d/network restart
重新进行拨接: adsl-stop; adsl-start
另外一个可能发生的情况,就是:『忘记设定预设路由』啦!例如使用 ifconfig 手动重新设定过网络卡的 IP 之后,其实路由规则是会被更新的,所以预设路由可能就会不见了!那个时候你就得要利用 route add 来增加预设路由啰!
5、步骤五:主机名与 IP 查询的 DNS 错误
如果你发现可以 ping 到 168.95.1.1 这个 Internet 上面的主机,却无法使用浏览器在网址列浏览 http://www.google.com 的话,那肯定 99% 以上问题是来自于 DNS 解析的困扰!解决的方法就是直接到 /etc/resolv.conf 去看看设定值对不对啊!一般常见的内容是这样的:
[AppleScript] ı鿴ƴ
[root@www ~]# vim /etc/resolv.conf
nameserver 168.95.1.1
nameserver 139.175.10.20
最常见的错误是『那个 nameserver 的拼字写错了!』真是最常见的问题~另外,如果 client 端是 Windows 系统呢?常常初学者会搞错的地方就是在 windows 的设定了!要注意:Windows 端的 DNS 设定与主机端 /etc/resolv.conf 的内容相同即可!很多初学者都以为 TCP/IP 内的 DNS 主机是填上自己的 Linux 主机,这是不对的 (除非你自己的 Linux 上面有 DNS 服务) !你只要填上你的 ISP 给你的 DNS 主机 IP 位置就可以了
另外,每一部主机都会有主机名 (hostname) ,预设的主机名会是 localhost ,这个主机名会有一个 127.0.0.1 的 IP 对应在 /etc/hosts 当中。如果你曾经修改过你的主机名,该主机名却无法有一个正确 IP 的对应, 那么你的主机在开机时,可能会有好几十分钟的延迟。 所以啰,那个 /etc/hosts 与你的主机名对应,对于内部私有网域来说,是相当重要的设定项目呢!
6、步骤六:Linux 的 NAT 服务器或 IP 分享器出问题
NAT 服务器最简单的功能就是 IP 分享器啦!NAT 主机一定是部路由器,所以你必须要在 Linux 上面观察好正确的路由信息。否则肯定有问题。另外, NAT 主机上面的防火墙设定是否合理? IP 分享器上面是否有设定抵挡的机制等等,都会影响到对外联机是否能够成功的问题点。 关于 NAT 与防火墙我们会在后续的章节继续介绍的啦!
7、步骤七:Internet 的问题
Internet 也会出问题喔!当然啦~没有任何东西是不会出问题的!举例来说,好几年前台湾西岸因为施工的关系, 导致南北网络骨干缆线被挖断,结果导致整个 Internet 流量的大塞车!这就是 Internet 的问题~还有,数年前 Study Area 网站放置的地点由于路由器设定出了点差错, 结果导致连接速度的缓慢。这都不是主机本身出问题,而是 Internet 上面某个节点出了状况。 想要确认是否问题来自 Internet 的话,就使用 traceroute 吧! 查察看问题是来自那个地方再说!
8、步骤八:服务器的问题
如果上述的处理都 OK ,却无法登入某部主机时,我想,最大的问题就是出现在主机的设定啦!这包括有: