Archlinux配置网络

来自KlniuWiki
跳转到: 导航, 搜索

目录

1 概览

网络配置的简明指南。

2 加载设备模块

如果你使用 hwdetect,它应该可以检测你的网卡( NIC )模块并在开机时自动加载。 否则的话,你需要根据你的硬件情况,判断哪些模块是需要加载的。

在网上搜索你的网卡型号,或者尝试着用 Linux LiveCD 来寻找需要的模块的名字──在启动后运行 lsmod 来查看当前加载的所有模块。

当你知道应该使用哪些模块之后,你可以加载它:

# modprobe <模块名>

如果你不想/不能使用像 hwdetect 这样的自动加载工具,你可以把这些模块添加到 /etc/rc.conf 中去,这样你就不用每次开机之后手动加载它。例如,如果 tg3 是你需要的网络模块:

MODULES=(!usbserial tg3 snd-cmipci)

其他常见的模块是: 8139too ( Realtek 芯片); sis900 ( SiS 卡)。

3 配置 IP

3.1 DHCP (自动获取) IP

在这种情况下,你需要安装 dhcpcd 包(绝大多数情况下都是默认安装好的)。这样编辑 /etc/rc.conf

eth0="dhcp"
INTERFACES=(eth0)
ROUTES=(!gateway)

3.2 静态 IP

如果你需要在不使用路由器的情况下,和一台安装 Windows 的电脑分享你的网络连接,确保两台电脑都使用静态 IP ,否则你的局域网将会有问题。

你需要:

  • 你的静态IP地址;
  • 子网掩码;
  • 广播地址;
  • 你的网关;
  • DNS 服务器(域名服务器)的 IP 地址;
  • 你的域名。

如果你想配置一个内部网络,可以将你的 IP设置成 192.168.*.* ,子网掩码设置成 255.255.0.0 ,广播地址设置成 192.168.255.255 。除非你的网络拥有路由器,否则网关地址不重要。参考下面的例子编辑你的/etc/rc.conf ,使用你自己的 IP ,掩码,广播地址和网关:

eth0="eth0 82.137.129.59 netmask 255.255.255.0 broadcast 82.137.129.255"
INTERFACES=(eth0)
gateway="default gw 82.137.129.1"
ROUTES=(gateway)

上面这个例子中, IP 为 82.137.129.29 ,掩码为 255.255.255.0 ,广播地址为 82.137.129.255 ,网关为 82.137.129.1

参考下面的例子编辑 /etc/resolv.conf ,使用你自己的域名服务器的 IP 和你的域名:

nameserver 61.23.173.5
nameserver 61.95.849.8
search example.com

上面的例子中,两个域名服务器分别为 61.23.173.5 、 61.95.849.8 。

你可以添加任意多个域名服务器。

如果你使用 DHCP 自动获取 IP 地址,但是不想每次启动网络的时候让 DHCP 更改你的 DNS 服务器(域名服务器),在 /etc/conf.d/dhcpcd 中的 DHCPCD_ARGS 中添加 -R 选项。这样会阻止 DHCP 在每次网络启动的时候改写你的 /etc/resolv.conf

DHCPCD_ARGS="-R -t 30 -h $HOSTNAME"

4 其他选项

如果因为某些原因, 使用 DHCP 自动获取( dhcpd eth0 )失败,安装 dhclient ( pacman -S dhclient ),使用 'dhclient eth0' 代替。

5 设置计算机名

编辑 /etc/rc.conf ,将 HOSTNAME 设置成你想要的计算机名称:

HOSTNAME="banana"

6 设置本机域名/ IP

编辑 /etc/hosts ,添加你在 /etc/rc.conf 的 HOSTNAME 选项中填写的东西,按照这样的格式:

127.0.0.1      banana.domain.org   localhost.localdomain      localhost    banana

那些带有 localhost 的项是很多程序所需要的

7 导入设置

想测试你的设置,可以重启计算机,或者在 root (超级用户)下运行 /etc/rc.d/network restart 。 试着按照这个顺序 ping 一些网络地址:你的网关, DNS 服务器(域名服务器), ISP 服务提供商,以及其他的网络地址。这样可以检查你的网络连接在哪里出了问题。

8 更多的设置

8.1 无线网络配置

无线网络( wlan )配置在 另外一个wiki页面 中。

8.2 防火墙

你可以安装和配置防火墙来让你感到更安全。

8.3 即插即用网络适配器( Ifplugd )

你可以安装这个服务( Ifplugd ),使得当网络适配器插入的时候自动配置网络,当网络断开的时候自动取消配置(比如某些3G的usb网络适配器)。这对于笔记本电脑这样的使用移动式的网络适配器的情况很有用,因为他只会在网络实际接入的时候才会配置网络接口。另外一个可能会用得着它的情况是,你需要重启你的网络,可是你既不想重启电脑也不想在 shell (终端)中配置。

它在 [extra] 中,因此安装非常简单:

# pacman -S ifplugd

在默认情况下,它会检查 eth0 设备。更改这个设置(以及更改其他设置,比如等待时间),可以编辑 /etc/ifplugd/ifplugd.conf

运行这个命令来启动它:

# /etc/rc.d/ifplugd start

或者将它加入/etc/rc.conf 的 DAEMONS 列表,这样它就能开机自动启动了。

8.4 绑定

你可以安装 'ifenslave' 来让你的两块真实网卡绑定同一个 IP 地址。

/etc/conf.d/bonding

bond_bond0="eth0 eth1"
BOND_INTERFACES=(bond0)

/etc/rc.conf

MODULES=(... bonding ...)
bond0="bond0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255"
INTERFACES=(bond0)

使用

#/etc/rc.d/network restart

重启网络

You can install 'ifenslave' to bind two real Ethernet cables with one IP address. /etc/conf.d/bonding

bond_bond0="eth0 eth1"
BOND_INTERFACES=(bond0)

/etc/rc.conf

MODULES=(... bonding ...)
bond0="bond0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255"
INTERFACES=(bond0)

restart network by

/etc/rc.d/network restart

9 疑难排解

9.1 更换了连接cable modem的计算机

许多家庭有线电视的运营商(例如加拿大最大的有线电视公司Videotron,还有中国大陆的有线电视宽带公司)都使用记录网卡MAC地址的方法将cable modem配置为只能一台计算机使用。一旦cable modem获得第一台连接它的PC的MAC地址,就不会响应任何其它MAC地址。这样如果你换了台PC(或者路由器),由于新PC(或者路由器)的MAC地址和旧的不同,就没法连接cable modem了。这时候必须复位cable modem以使它重新辨认新的PC。 你得关闭cable modem电源,然后重新打开。一旦cable modem重启并再次登录在线完毕(指示灯熄灭),重启新连接的PC以使它发起一个DHCP请求,或者手动发起DHCP请求。

9.2 TCP窗口扩缩(window scaling)问题

TCP包头有个窗口(window)值表明其它主机可以发送多少数据回来。这个值只有16个bit,也就是说窗口打消最多只有64Kb。TCP包会被缓存一段时间(得被记录),如果内存限制(过去经常是)的话,主机很容易会用完内存。

回到1992年,内存逐渐增加,RFC 1323被发布以改善情况:窗口扩缩(Window Scaling)。所有包里的窗口值,可以被初始连接时定义的一个缩放因子(Scale Factor)所改变。

8-bit的缩放因子使得窗口可以是初始64Kb的32倍。

但是Internet上有些有问题的路由器和防火墙会将缩放因子重写为0,这导致主机之间产生误解。

Linux内核2.6.17引入了新的计算方式生成更高的缩放因子,间接的使得这些有问题的路由器和防火墙引发的后果更明显。

这导致连接缓慢甚至中断。

9.2.1 如何诊断问题

首先,我们要明白:这个问题很怪异。在某些案例中,你根本无法使用(HTTP, FTP, ...),而有时候,你可以连接某些主机(很少)。

警告dmesg的输出正确,日志也没问题,ifconfig报告状态正常— 实际上一切都正常。

如果你无法浏览任何网站,不过你能ping通少部分主机,很可能你是遇到了这个问题。:ping使用ICMP协议所以不受TCP问题的影响。

你可以尝试使用WireShark。你也许会看到UDP和ICMP通讯成功,但是TCP通讯不成功(仅对外国主机)。

9.2.2 如何修复(糟糕的方法)

用比较糟糕的方法修复的话,你可以修改缩放因子计算所基于的tcp_rmem值。虽然它对大部分主机有效,但并不担保一定都有效,特别是某些很远的主机。

echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem

或者你可以尝试拔掉一条内存条。(是的,你没看错)

9.2.3 如何修复(好点的方法)

只需要禁止窗口缩放。虽然窗口缩放是个不错的TCP特性,但它也可能令人不安,特别是当你没法修改除了问题的路由器的时候。有几种方法可以禁止窗口缩放,而看来最可靠的(适用于大部分内核)将下面内容加入到你的/etc/rc.local中:

echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

9.2.4 如何修复(最佳的方法)

这个问题是由有毛病的路由器/防火墙引致的,所以最好换了它。有些用户报告说那些有问题的路由是他们自己的DSL路由。

9.2.5 更多

本段内容是基于LWN文章TCP window scaling and broken routers和一个Kernel Trap 文章:Window Scaling on the Internet

要了解最新信息,可以点击下列问题:

在LKML上也有几篇相关的帖子。

9.3 Realtek没有连接/网络唤醒问题

使用基于Realtek 8168 8169 8101 8111芯片网卡(独立网卡和板载)的用户也许会发现这个问题,启动时网卡不可用,网卡上的连接指示灯不亮。这通常会发生在安装了Windows的双启动系统上。在windows下使用realtek官方驱动(2007年5月后的版本)会引致这个问题。新驱动通过在Windows关机时禁止网卡来关闭网络唤醒功能,直到下一次Windows启动前网卡都会一直不可用。通过观察连接指示灯在Windows启动前一直熄灭,而Windows关机时也会熄灭,你可以发现这个问题。正常操作应该是只要系统一直开着,即使在POST加电过程中,连接指示灯也应该一直亮着的。这个问题也会影响其它没有安装新驱动的操作系统(例如Live CD等)。这里给出几种解决方案。

9.3.1 方法一 还原/变更Win驱动

你可以将你的Windows网卡驱动还原回Microsoft自带的驱动(如果有的话),或者安装2007年5月份以前的Realtek官方驱动(也许在网卡附带的CD上)。

9.3.2 方法二 启动Windows驱动里的网络唤醒功能

也许最好最快的修复方法就是改变Windows驱动里的这个设置。这个方法可以解决很多其它操作系统而不仅仅是Arch的麻烦。在Windows的设备管理器里,找到你的Realtek网卡,双击它。在“高级”标签页中,开启"wake-on-lan after shutdown"选项。

 例如在Windows XP里
 右键点击我的电脑-->管理-->设备管理器-->网络适配器-->双击 Realtek ... --> 高级标签页--> Wake-On-Lan After Shutdown --> 启用。

9.3.3 方法三 更新Realtek Linux驱动

可以在realtek的官方网页上找到新的Linux驱动。(没有测试过,不过相信也能解决问题)。

9.4 从入门拷过来的

如果ping www.google.com后得到"unknown host"的错误,可以认为你的网络尚未正确配置。你需要重新检查以下内容的完整性和正确性: /etc/rc.conf # 特别留意HOSTNAME= 和 NETWORKING 部分有无输入错误。

/etc/hosts # 复核一下格式。(看之前的内容。)

/etc/resolv.conf # 当你使用静态IP时需要检查。如果你使用DHCP,缺省这个文件会被自动创建和销毁,不过也可以改为你需要的内容。(参见Network。)

9.4.1 有线网络

用以下命令检查网络

ifconfig

你应该看到eth0这一项。如果有需要,你可以这样设置一个新的静态IP:

ifconfig eth0 <ip address> netmask <netmask> up 

并且这样设置缺省网关:

route add default gw <ip address of the gateway>

查看一下/etc/resolv.conf是否包含你的DNS服务器,不过缺失了则补填进去。 再次用ping www.google.cn检查一下网络。如果一切正常,将/etc/rc.conf调整为刚才新设置的静态IP。如果你的网络使用DHCP服务器/路由器的话,输入:

dhcpcd eth0

如果这样可行的话,则将/etc/rc.conf按之前所述方法调整为动态IP。

9.4.2 模拟信号调制解调器

如果你想使用外接电话线调制解调器, 你至少要安装ppp包. 根据需要修改配置文件 /etc/ppp/options 你可以参考 man pppd 的帮助.

你还需要定制一个 chat 协议脚本, 在初始化握手连接建立以后, 提供你的ISP用户名和密码. 命令pppd 和 chat 的帮助里有例子不管你是菜鸟还是高手都应该能搞定连接了. 使用 udev 的话, 串口设备一般是 /dev/tts/0 和 /dev/tts/1.

如果你不想为了 pppd 拔光自己的头发, 你可能会选择安装 wvdial 或类似的配置工具来简化这个过程. 如果你的猫是所谓的 WinModem, 也就是内置 PCI modem 卡, 你可以在这个网址找到大量信息: LinModem

9.4.3 ISDN

通过三步,完成 ISDN 的安装和配置:

  1. 安装配置固件Install and configure hardware
  2. 安装配置ISDN 管理工具
  3. 添加ISP信息

现在的 Arch stock kernels 已经包含了ISDN 所需要的modules, 所以不需要重新去编译内核,除非 you're about to use rather odd ISDN hardware. 把ISDN卡插入电脑或者插入USB ISDN-Box之后,you can try loading the modules with modprobe. 绝大部分的ISDN PCI 卡都能被module hisax处理,只需要两个参数:类型和协议。 如果使用的是1TR6标准,则协议设定为 '1' ,如果使用的是EuroISDN (EDSS1),协议设定为 '2', '3' if you're hooked to a so-called leased-line without D-channel, 如果使用的是US NI1,则设为'4'.

所有配置细节都可以在kernel documentation, more specifically in the isdn subdirectory, and available online中获知。 类型的参数是根据电视卡来设定的,在README.HiSax kernel documentation中,有一个可能类型的列表。 用相应的参数加载moduleChoose,比如这个:

modprobe hisax type=18 protocol=2

这个将加载适用于电视卡类型为ELSA Quickstep 1000PCI,德国使用的EDSS1协议的模块hisax。可以在日志文件/var/log/everything.log中查看是否模块被预加载。额外的USB ISDN Adapter需要加载些USB模块才能正常工作。

通过上述设定之后,如果电视卡能正常工作,那么把下面模块和参数加入/etc/modprobe.conf中:

alias ippp0 hisax
options hisax type=18 protocol=2

这么做的好处是,这些模块在不使用时不会被加载。另外的方法是可以在这只加参数,把hisax加入/etc/rc.conf里面的MODULES,这样做的坏处就是不管这些模块是不是在使用,都加载了。

完成上述步骤之后,需要安装管理工具

安装软件包isdn4k-utils,阅读关于isdnctrl的说明手册。在说明手册里,将有详细的说明:如何创建一个配置文件that can be parsed by isdnctrl,安装实例。 Please note that you have to add your SPID to your MSN setting separated by a colon if you use US NI1.

使用isdnctrl utility配置ISDN卡之后,将可以拨号到你设定的PHONE_OUT参数的机器上,但提示用户名和密码错误。把用户名和密码加入到/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets,这个主要根据的是你的ISP使用的协议授权方式,as if you were configuring a normal analogous PPP link。如果无法确定,可以两个文件都加。

完成上述设定之后,用root帐号建立一个拨号连接:

isdnctrl dial ippp0

有啥问题,请检查日志文件!

9.4.4 DSL (PPPoE)

仅当需要你的计算机去主动拨号连接ISP的情况下才需参考本段内容。如果你使用独立的路由器来负责这类工作,你只需要设置一个缺省网关即可。

在使用DSL连接前,你得先在计算机里安装一个连接到DSL-Modem的网卡。将你新装网卡加入到modules.conf/modprobe.conf或者MODULES列表之后,安装rp-pppoe软件包并运行pppoe-setup脚本来配置你的连接。当你输入完有关信息后,可以分别通过以下命令来进行连接和挂断:

/etc/rc.d/adsl start

/etc/rc.d/adsl stop

setup过程一般都是很容易、直观的,如果还有不懂可以阅读man手册。如果你想在启动时自动拨号,可以将adsl加入到DAEMONS列表中。

10 参见

个人工具
分类
化学
[×] 國學
学佛
[×] 数学
物理
生活
[×] 英语
读书
辞典
廣告