2. Linux 下网络“实战”

如何把我们的 Linux 主机接入网络

如果要让一个系统能够联网,首先当然是搭建好物理网络了。接入网络的物理方式还是蛮多的,比如直接用网线接入以太网,用无线网卡上网,用 ADSL 拨号上网……

对于用以太网网卡接入网络的常见方式,在搭建好物理网络并确保连接正常后,可以通过配置 IP 地址和默认网关来接入网络,这个可以通过手工配置和动态获取两种方式。

范例:通过dhclient获取IP地址

如果所在的局域网有 DHCP 服务,那么可以这么获取,N 是设备名称,如果只有一块网卡,一般是 0 或者 1 。

$ dhclient ethN

范例:静态配置IP地址

当然,也可以考虑采用静态配置的方式,ip_address 是本地主机的 IP 地址,gw_ip_address 是接入网络的网关的 IP 地址。

$ ifconfig eth0 ip_address on
$ route add deafult gw gw_ip_address

如果上面不工作,记得通过 ifconfig/mii-tool/ethtool 等工具检查网卡是否有被驱动起来,然后通过 lspci/dmesg 等检查网卡类型(或者通过主板手册和独立网卡自带的手册查看),接着安装或者编译相关驱动,最后把驱动通过 insmod/modprobe 等工具加载到内核中。

用 Linux 搭建网桥

网桥工作在 OSI 模型的第二层,即数据链路层,它只需要知道目标主机的 MAC 地址就可以工作。 Linux 内核在 2.2 开始就已经支持了这个功能,具体怎么配置看看后续参考资料吧。如果要把 Linux 主机配置成一个网桥,至少需要两个网卡。

网桥的作用相当于一根网线,用户无须关心里头有什么东西,把它的两个网口连接到两个主机上就可以让这两个主机支持相互通信。不过它比网线更厉害,如果配上防火墙,就可以隔离连接在它两端的网段(注意这里是网络,因为它不识别 IP),另外,如果这个网桥有多个网口,那么可以实现一个功能复杂的交换机,而如果有效组合多个网桥,则有可能实现一个复杂的可实现流量控制和负载平衡的防火墙系统。

用 Linux 做路由

路由工作在 OSI 模型的第三层,即网络层,通过 router 可以配置 Linux 的路由,当然,Linux 下也有很多工具支持动态路由的。相关的资料在网路中铺天盖地,由于时间关系,这里不做介绍。

用 Linux 搭建各种常规的网络服务

需要什么网络服务呢?

  • 给局域网弄个 DHCP 服务器,那就弄个 dhcpd,看看参考资料
  • 如果想弄个邮件发送服务器,那就安装个 sendmail 或者 exim4
  • 如果再想弄个邮件列表服务器呢,那就装个 mailman
  • 如果想弄个接收邮件的服务器呢,那就安装个 pop3 服务器;
  • 如果想弄个 web 站点,那就弄个 apache 或者 nginx 服务器;
  • 如果想弄上防火墙服务,那么通过 iptables 工具配置 netfilter 就可以

What's more?如果你能想到,Linux上基本都有相应的实现。

Linux 下网络问题诊断与维护

如果出现网络问题,不要惊慌,逐步检查网络的各个层次:物理链接、链路层、网络层直到应用层,熟悉使用各种如下的工具,包括 ethereal/tcpdumphpingnmapnetstatnetpipenetperfvnstatntop 等。

关于这些工具的详细用法和网络问题诊断和维护的相关知识,请看后续相关资料。