废物利用 Openwrt X86 刷机实战(5个千兆网口+wifi,任意分配wan和lan,使用全部硬盘空间)
最近使用中发现一般的路由器性能还是不行,例如顶级的wrt1900ac,50M跑满SS使用rc4-md5的负载约为40-50%,若使用aes256cfb负载约为70%。如果家里是100M的带宽跑满SS估计会用到100%,这时候性能就不够了,特别是如果家里有两条宽带的,那性能就更不够用了,此时就必须使用x86架构了。另外废旧的电脑可以利用起来。
网上openwrt x86攻略不多,大多数只有寥寥几句,还是自己弄吧。。。
0.准备工作
硬件配置:
处理器:Intel(R) Core(TM) i3 CPU 540 @ 3.07GHz
主板:索泰 H55 itx,板子上只有一个千兆网口Intel 82758DM,还有个mini pcie的无线网卡ralink RT2790/2720,无线网卡驱动为kmod-rt2800-pci(This package contains the Ralink Driver for WiFi, a Linux device driver for 802.11a/b/g universal NIC cards – either PCI, PCIe or MiniPCI – that use Ralink chipsets (rt2760, rt2790, rt2860, rt2890).)
内存:G skill F3-12800CL9D-4GBRL 2g*2
固态硬盘:镁光M4 CT256M4SSD2 SATA3 SSD 256GB (openwrt use all space)
四口千兆PCIE网卡:Intel I340-T4( Intel 82580 )四口PCIE网卡pci-e1000M有线千兆网卡E1G44HT(注意:之所以选择这块而不是更加新的I350-T4,是因为怕驱动找不到,而82580芯片直接有kmod-igb驱动支持(This package provides the igb kernel modules for Intel 82575/6 & 82580 Gigabit NICs))
U盘一个
显示器键盘鼠标网线
和另外一台win7电脑。。。
软件:
op官网下载的openwrt-x86-64-combined-ext4.img.gz (OpenWrt Chaos Calmer r46386 / LuCI (git-15.195.77528-e7f57e0) 2015.07.16)及其所有的packages
physdiskwrite-0.5.3 注意由于musl对chinadns极不友好,改了source code虽然能编译出来但是不能用,大伙都建议退回uclibc,所以我改刷chaos_calmer/15.05-rc3
Win32DiskImager,rc3编译package需要先apt-get install ccache
EasyWebSvr-v1.9
gparted-live-0.20.0-2-i486.iso(下载后把iso改名为img)
1.安装openwrt x86到SSD
a)把openwrt-x86-64-combined-ext4.img.gz 解压到跟physdiskwrite.exe相同的目录下,并将镁光M4 SSD挂载到PC的sata接口上,可以预先格式化成fat32.。。
b)win7 cmd下运行:
physdiskwrite.exe -u openwrt-x86-64-combined-ext4.img
正常情况下会出现硬盘列表让你选择,千万千万不要选错,如果怕选错,可以事先把除系统盘和需要安装OP的盘外的其他所有盘数据线拔掉!!!!
选择到镁光M4 SSD后开始写入,完成后将SSD挂载到索泰主板上。
2.扩展SSD空间,使得openwrt可以使用全部硬盘空间
上述安装完成后,实际上是把镁光M4 SSD分成了2个区,第一个区只有4M,应该是引导区,第二个区是系统区,大约48M,剩下的都是未分配,太浪费了。。。。所以要想办法扩展。。。
研究了半天后发现可以用gparted实现。。。
a)将gparted-live-0.20.0-2-i486.img通过Win32DiskImager写入U盘(千万不要用ultraISO,否则无法启动gparted),这一步很简单
b)将u盘插入索泰主板usb口,并从usb启动,正常情况可以看到一个菜单,选择第一个 live default,第二个菜单选择默认的no touch,然后选择语言什么的,具体可以参考http://www.miui.com/thread-764482-1-1.html
c)进入图形界面后,选中M4的第二个分区,然后调整,使之使用全部未分配的空间,点击应用,过一会儿就可以了,然后关闭机器。。。
3.启动并设置openwrt
这里我走了一些弯路,特别是接上显示器,启动openwrt后,不插网线的话,启动信息会停留在:
eth0 entered promiscuous mode br-lan link is not ready
其实这并不代表openwrt没有启动,而是完全正常的启动。。。我之前以为没成功,郁闷了很久。。。
出现上述字样以后:
a)可以把网线将索泰H55主板板载网口与win7电脑网口连接,把win7 电脑ip改成192.168.1.150,网关192.168.1.1
b)远程连接x86 路由,在win7电脑的cmd命令行运行
telnet 192.168.1.1
运行passwd改个密码,然后运行df -m会看见:
Filesystem 1M-blocks Used Available Use% Mounted on rootfs 241382 9 241357 0% / /dev/root 241382 9 241357 0% / tmpfs 1815 0 1814 0% /tmp tmpfs 1 0 1 0% /dev
一个字,爽~~~
c)这时候如果运行ifconfig会发现只有一个eth0,这是因为PCIE的网卡驱动没装。。不过这没有关系,我在win7机器上用EasyWebSvr-v1.9搭了一个op源,所以要修改更新源,并安装驱动。
vi /etc/opkg.config
src/gz chaos_calmer_base http://192.168.1.150/packages/base src/gz chaos_calmer_luci http://192.168.1.150/packages/luci src/gz chaos_calmer_management http://192.168.1.150/packages/management src/gz chaos_calmer_packages http://192.168.1.150/packages/packages src/gz chaos_calmer_routing http://192.168.1.150/packages/routing src/gz chaos_calmer_telephony http://192.168.1.150/packages/telephony
opkg update opkg install kmod-igb opkg install kmod-rt2800-pci opkg install luci reboot
启动的时候需要把网线从索泰H55主板板载网口拔下来,插到pcie网卡网口最上面一个,这是因为驱动装完以后,pcie网卡最上面网口变成了eth0,依次是eth1-3,而板载网卡变成了eth4.。。
重启后就可以识别所有的网口了。。。luci下wifi也有了
4.进入luci设置wan和lan
win7电脑打开http://192.168.1.1,我是把eth0到eth2设为lan,把eth3设为wan1,eth4设为wan。。。。由于没有了switch,也没有vlan这个东东了,划分wan和lan变得异常简单。。。
root@OpenWrt:~# ifconfig br-lan Link encap:Ethernet HWaddr 00:1B:21:A6:67:B8 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::21b:21ff:fea6:67b8/64 Scope:Link inet6 addr: fd8f:2b2d:8305::1/60 Scope:Global inet6 addr: fd79:9a9:45d8:4::1/62 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:30618 errors:0 dropped:0 overruns:0 frame:0 TX packets:32759 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:3533404 (3.3 MiB) TX bytes:22726141 (21.6 MiB) eth0 Link encap:Ethernet HWaddr 00:1B:21:A6:67:B8 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:31454 errors:0 dropped:0 overruns:0 frame:0 TX packets:35833 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4148515 (3.9 MiB) TX bytes:22881189 (21.8 MiB) Memory:fbd80000-fbdfffff eth1 Link encap:Ethernet HWaddr 00:1B:21:A6:67:B9 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fbc80000-fbcfffff eth2 Link encap:Ethernet HWaddr 00:1B:21:A6:67:BA UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:fbc00000-fbc7ffff eth3 Link encap:Ethernet HWaddr 00:1B:21:A6:67:BB inet addr:172.24.1.199 Bcast:172.24.1.255 Mask:255.255.255.0 inet6 addr: fe80::21b:21ff:fea6:67bb/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19422 errors:0 dropped:0 overruns:0 frame:0 TX packets:13547 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:15933184 (15.1 MiB) TX bytes:1741112 (1.6 MiB) Memory:fbb80000-fbbfffff eth4 Link encap:Ethernet HWaddr 00:01:2E:2F:17:1C inet6 addr: fe80::201:2eff:fe2f:171c/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:9462 errors:0 dropped:0 overruns:0 frame:0 TX packets:7873 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4387863 (4.1 MiB) TX bytes:1012976 (989.2 KiB) Interrupt:20 Memory:fbac0000-fbae0000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:332 errors:0 dropped:0 overruns:0 frame:0 TX packets:332 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:23183 (22.6 KiB) TX bytes:23183 (22.6 KiB)
root@OpenWrt:~# vi /etc/config/network
config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'lan' option type 'bridge' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' option _orig_ifname 'eth0' option _orig_bridge 'true' option ifname 'eth0 eth1 eth2' config interface 'wan' option proto 'dhcp' option _orig_ifname 'eth1' option _orig_bridge 'false' option ifname 'eth4' config interface 'wan6' option proto 'dhcpv6' option _orig_ifname 'eth1' option _orig_bridge 'false' option ifname 'eth4' option reqaddress 'try' option reqprefix 'auto' config globals 'globals' option ula_prefix 'fd8f:2b2d:8305::/48' config interface 'wan1' option proto 'dhcp' option ifname 'eth3'
5.如果要无线支持wpa加密要另外装wpa-supplicant还有hostapd