大头龙仔Blog

A strong man can save himself. A great man can save another.

DRouter路由篇

| Comments

早些入手了一个华硕AC88U,一星期左右就闲鱼出去了,之后入了网件R7000,一直用网件,非常稳定。 前段时间又想着买个NAS玩玩,随便看看感觉都不便宜,于是决定自己DIY一个,那不如也带上路由的功能吧,于是就有了drouter的计划,本篇先从主机组装、Linux和基本路由功能说起吧。

硬件列表

  • 技嘉J1900主板(低功耗, ITX,有PCI预防网卡坏掉,板载双网卡)
  • 4G笔试本内存
  • 两个2T日立企业盘,后面要组软RAID 1(企业盘就是贵,预算多的这里上SSD做系统盘感觉爽好多)
  • JONSBO C2机箱(装得下两个3.5硬盘,又小巧的,只找到了这个)
  • 全汉400W服务器电源(买上了档次的电源我都选择全汉,本来想试试新巨的)

系统安装

我选的是slackware 14.1,这个自己喜欢就好,但安装过程因为要组RAID 1,slackware还是说得很详细,大体上是:

  • 使用cfdisk分区,我是分了root 100G,swap 8G
  • 分区同步: sfdisk -d /dev/sda | sfdisk --Linux /dev/sdb
  • root: mdadm --create /dev/md0 --level 1 --raid-devices 2 /dev/sda1 /dev/sdb1 --metadata=0.90
  • swap: mdadm --create /dev/md1 --name=1 --level 1 --raid-devices 2 /dev/sda2 /dev/sdb2
  • mkswap: mkswap /dev/md1
  • 开始常规的slackware setup,lilo那里会失败,不用管先安装完
  • chroot /mnt,修改lilo.conf,加入raid-extra-boot = mbr-only,root和boot设为/dev/md0,执行lilo
  • mdadm -Es > /etc/mdadm.conf以记录软raid的信息,如果不执行这个,有可能会reboot失败

PPPOE拨号

  • pppoe-setup
  • 填入账号密码等
  • FIREWALL=MASQUERADE
  • pppoe-start,应该就可以拨上去了,使用网口eth1,ifconfig应该出现ppp0
  • 如果要让系统访问外网,要加iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT,可以看看/etc/ppp/firewall-masq
  • /etc/resolv.conf,我用的是119.29.29.29114.114.114.114

DHCPD(动态分配IP)

  • /etc/dhcpd.conf
1
2
3
4
5
6
7
8
9
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0{
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 119.29.29.29;
  option ip-forwarding off;
  option broadcast-address 192.168.1.255;
}

最后

eth0是对内网的,所以接到交换机,PC, AP等接入交换机,自动获取IP后,就可以上网啦,至此完成一台有基本路由功能的server。下面几个是为了增强稳定性的。

  • 断线自动重连/etc/cron.d/pppoe-keep.sh
1
2
3
4
5
6
7
8
9
#!/bin/sh

while true; do
    /sbin/ifconfig ppp0 > /dev/null
    if [ $? -ne 0 ]; then
        /usr/sbin/pppoe-start
    fi
    sleep 5
done
  • 断线自动重连watch dog/etc/cron.d/pppoe-keep_watchdog.sh
1
2
3
4
5
6
#!/bin/sh

ps uax | grep 'pppoe-keep.sh' | grep  -v grep
if [ $? -ne 0 ]; then
    /bin/sh /etc/cron.d/pppoe-keep.sh &
fi
1
2
# keep pppoe connecting
* * * * * /bin/sh /etc/cron.d/pppoe-keep_watchdog.sh
  • 每天自动断线一次 /etc/cron.daily/pppoe-stop
1
2
3
#!/bin/sh

/usr/sbin/pppoe-stop
  • 每周机器自动重启一次 /etc/cron.weekly/reboot
1
2
3
#!/bin/sh

/sbin/reboot

NOT THE END

一些脚本和配置都在这里https://github.com/imlcl/DRouter/。后面会有DDNS, NAS等续篇 : )

Comments