疯人院里的快乐时光

疯,不为常规所度测……

用Ubuntu来做个软路由

促成这篇文章的形成其实有很多因素,最早的时候用的路由是中兴的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-serve
sudo apt-get install hostapd
sudo apt-get install bridge-utils
sudo apt-get install dnsmasq

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

auto lo
iface lo inet loopback
auto lan0   #有线网卡名称
iface lan0 inet manual
auto wlan0  #无线网卡名称
iface wlan0 inet manual
auto br0 #自定义的接口
iface br0 inet static
address 192.168.1.1  本机局域网地址 别的机器网关就是它了
netmask 255.255.255.0
broadcast 192.168.1.255
bridge-ports lan0 wlan0 #把两真实网卡桥连
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_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=nl80211
ssid=Ubuntu  # 本热点的名称
# country_code=US
hw_mode=g  # 模式
channel=11  # 频道
dtim_period=1
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
# accept_mac_file=/etc/hostapd/hostapd.accept #MAC地址限制,需要建立这个文件
# deny_mac_flie=/etc/hostapd/hostapd.deny
auth_algs=3
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-40][DSSS_CCK-40]
wpa=2
wpa_passphrase=88888888  # 热点密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_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=br0
no-dhcp-interface=lan0
no-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了,而现在只能用来码代码了。

点赞