促成这篇文章的形成其实有很多因素,最早的时候用的路由是中兴的H618B,那240Mhz的处理器在脱机下载以及当NAS时性能感人,对了,那用的是Tomato系统,还只能双拨,就更感人了。后来换成了图拉丁,折腾了很久,又是敲腿又是自己动手焊了个DC-ATX电源,这时用的是OpenWRT系统的X86版本,性能方面好多了,好歹是图羊1G的频率,用了好长一段时间。但是因为是老板子了,没有PCI-E也没有装显卡,为了节省功耗嘛,可结果是出了点小问题又要死命折腾,很是啰嗦。实在累了,接着换了Modt平台,用了是建基i915的板子,处理器1.6G迅驰,又用了好长时间,可以说,这套东西基本上可以一直用下去了,系统非常稳定的,各种服务器运行非常正常。可是可是,某一天测功耗28瓦,天啊,还没加3.5硬盘呢,因为很久不看电影了,NAS功能一直没用,孰不可忍,加硬盘了还得了?换,于是某宝瞎逛,入手了一片N3150,真是牛逼,加上了所有的硬件都只有18瓦,包括3.5硬盘。可是如果只装个OpenWRT是不是大材小用啊,我都给它装了16G内存了,还能硬解码4K呢。于是,想起反正都是Linux的家族,应该Ubuntu也可以实现路由功能吧。

折腾这就又开始……备份硬盘资料,全盘安装Ubuntu,Desktop版本,现在的Linux系统安装应该说也是傻瓜的很,此过程忽略……

我这里是情况是板载千兆有线网卡,插了张PCI-E的AR9380无线网卡,还有一张RT2870USB无线网卡,RT2870是装了定向天线点对点接收单位的网络,有线网卡和9380做局域网使用。

第一步当然是用2870连上网络了,因为接下来会安装一些软件。接着用ifconfig -a查看所有的网卡名称,这等一下得用上。

sudo apt-get install isc-dhcp-servesudo apt-get install hostapdsudo apt-get install bridge-utilssudo apt-get install dnsmasq

配置网络接口:sudo gedit /etc/network/interfaces

auto loiface lo inet loopbackauto lan0   #有线网卡名称iface lan0 inet manualauto wlan0  #无线网卡名称iface wlan0 inet manualauto br0 #自定义的接口iface br0 inet staticaddress 192.168.1.1  本机局域网地址 别的机器网关就是它了netmask 255.255.255.0broadcast 192.168.1.255bridge-ports lan0 wlan0 #把两真实网卡桥连bridge_fd 9bridge_hello 2bridge_maxage 12bridge_stp off

配置DHCP服务器:sudo gedit /etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {    allow booting;    allow bootp;    interface br0;  网络接口填自定义的那个    option domain-name-servers 58.20.127.238,192.168.1.1;  #分给客户的DNS地址    default-lease-time 604800; #7 days    max-lease-time 2592000; #30 days    range 192.168.147.100 192.168.1.200;    option subnet-mask 255.255.255.0;    option broadcast-address 192.168.1.255;    option routers 192.168.1.1;}

sudo gedit /etc/default/isc-dhcp-server

INTERFACES="br0"

配置hostapd无线控制:sudo gedit /etc/hostapd/hostapd.conf

interface=wlan0  #无线网卡名称bridge=br0   # 自定义的driver=nl80211ssid=Ubuntu  # 本热点的名称# country_code=UShw_mode=g  # 模式channel=11  # 频道dtim_period=1rts_threshold=2347fragm_threshold=2346macaddr_acl=0# accept_mac_file=/etc/hostapd/hostapd.accept #MAC地址限制,需要建立这个文件# deny_mac_flie=/etc/hostapd/hostapd.denyauth_algs=3ieee80211n=1ht_capab=[HT40-][SHORT-GI-40][DSSS_CCK-40]wpa=2wpa_passphrase=88888888  # 热点密码wpa_key_mgmt=WPA-PSKwpa_pairwise=TKIP CCMPrsn_pairwise=CCMP

sudo gedit /etc/default/hostapd

RUN_DAEMON="yes"DAEMON_CONF="/etc/hostapd/hostapd.conf"

这样设置之后,这两网卡会在network-manager里显示未托管了,但是还能控制剩下那个无线网卡接入断开某个网络。配置dnsmasq需要network-manager禁用dnsmasq-base,默认开启了。sudo geidt /etc/NetworkManager/NetworkManager.conf,注释掉里面的dns=dnsmasq

打开dnsmasq配置文件:sudo gedit /etc/dnsmasq.conf

listen-address=192.168.1.123,127.0.0.1

127.0.0.1是给自己用的,192.168.1.1是给局域网别的机器用
还有dnsmasq本身是带dhcp服务的,这里关掉它

no-dhcp-interface=br0no-dhcp-interface=lan0no-dhcp-interface=wlan0

在/etc目录下建立resolv.dnsmasq.conf 文件,并把resolv-file变改文件指向

resolv-file=/etc/resolv.dnsmasq.conf

表示 dnsmasq 会从这个指定的文件中寻找上级 dns 服务器列表,而不是从本机的(resolv.conf)中读取dns服务器列表,如果机器的地址是通过dhcp取得的话,该文件容易受到影响从而影响dnsmasq。

最后,在rc.local文件里加上:

/etc/init.d/isc-dhcp-server start #启动DHCP服务iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE #wlan1网络接入网卡

至此,一台超性能的路由+服务器一体机全部搞定,可惜了,家里装修的时候入网口没在客厅电视柜,否则装个KODI,又是一台HTPC了,而现在只能用来码代码了。