电子科大清水河校区教研室网络方案


清水河校区电信用的是IEEE 802.1x的认证,目前支持的路由中最好的也就是TP的WR842N了。对于家庭/寝室还行,但是对于教研室几十号人高强度使用网络环境来说还是遭不住的。本人用PC做网关代替了路由,目前测试来看:稳定、高可定制,推荐教研室用(当然也可以找性能好点的路由刷openwrt之类的)


硬件需求:闲置pc一台(双网卡)、二层交换机 考虑到对驱动的支持,本人机器装的是ubuntu14.04,网卡分别为eth0(对外拨号)、eth1(对内网关,接交换机),子网段为192.168.1.0/24 本配置仅仅是针对个人情况,如果你的软硬件有特别之处,大同小异

首先为了让网关能基本工作,需要配置iptables转发 修改/etc/sysctl.conf,net.ipv4.ip_forward=1

sysctl -p
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
service iptables save

上面save可能不能执行,可以装个iptables-persistent代替,用法跟iptables基本一样,后面的iptables修改都要记得save下

自动拨号

拨号使用的是wpa_supplicant,一般发行版都默认安装的 cat /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
    pre-up wpa_supplicant -B -i eth0 -c /etc/wpa_supplicant.conf -D wired -f /var/log/wpa.log
    post-down killall -q wpa_supplicant
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

这样开关机都是自动拨号下线的,其中 cat /etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=MD5
identity="username"
password="passwd"
eapol_flags=0
}

DNS缓存服务器

既然网关有足够的资源,完全可以用作DNS服务器,除了考虑性能,这个方案还可以弱弱的防DNS污染、去广告等 apt-get install dnsmasq 在/etc/dnsmasq.conf里取消下面的注释 conf-dir=/etc/dnsmasq.d 且修改interface=eth1

然后执行下面脚本(如果需要可定时任务执行更新)

#!/bin/sh                                                                                                                                                               
cnlist() {
    wget -4 --no-check-certificate -O /etc/dnsmasq.d/accelerated-domains.china.conf https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf
    wget -4 --no-check-certificate -O /etc/dnsmasq.d/bogus-nxdomain.china.conf https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf
}
adblock() {
    wget -4 --no-check-certificate -O - https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt |
    grep ^\|\|[^\*]*\^$ |
    sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' | uniq > /etc/dnsmasq.d/adblock.conf

    wget -4 --no-check-certificate -O - https://raw.githubusercontent.com/kcschan/AdditionalAdblock/master/list.txt |
    grep ^\|\|[^\*]*\^$ |
    sed -e 's:||:address\=\/:' -e 's:\^:/127\.0\.0\.1:' >> /etc/dnsmasq.d/adblock.conf
}
hosts(){
    wget -4 --no-check-certificate -O /etc/hosts https://raw.githubusercontent.com/zxdrive/imouto.host/master/imouto.host.txt
    echo '222.197.164.72 portal.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 gsreport.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 sa.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 hrm.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 epay.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 uis.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 freshman.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.72 gs.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.73 oa.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.74 ea.uestc.edu.cn' >> /etc/hosts
    echo '222.197.164.86 ecard.uestc.edu.cn' >> /etc/hosts
    echo '222.197.165.2 staff.uestc.edu.cn' >> /etc/hosts
    echo '222.197.165.6 map.uestc.edu.cn' >> /etc/hosts
    echo '222.197.165.7 www.bb9.uestc.edu.cn' >> /etc/hosts
    echo '222.197.183.67 www.gzgl.uestc.edu.cn' >> /etc/hosts
    echo '222.197.165.85 www.lib.uestc.edu.cn' >> /etc/hosts
}
cnlist
adblock
hosts
/etc/init.d/dnsmasq restart

记得这个要设置为开机自启动

dhcp服务器

apt-get install isc-dhcp-server cat /etc/dhcp/dhcpd.conf

ddns-update-style none;
option domain-name "xxoo.com";
# DNS地址
option domain-name-servers 192.168.1.1, 114.114.114.114;
# 地址释放时间,亲测不要太小
default-lease-time 604800;
max-lease-time 2419200;
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
# DHCP范围: 160-254
  range 192.168.1.160 192.168.1.254;
  option domain-name-servers 192.168.1.1;
  option domain-name "xxoo.com";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 604800;
  max-lease-time 2419200;
}
# 静态区,逐个添加即可
host yyy {
  hardware ethernet 74:A4:B5:00:14:24;
  fixed-address 192.168.1.xxx;
}

端口映射

如果需要端口映射,如把192.168.1.55的tcp 5901映射出去,可以这样: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 5901 -j DNAT --to-destination 192.168.1.55 其他的映射需求可以自行设置

监控

由于没有了web界面,网关的监控就要折腾下了 一般htop+nload就可以了 当然还有iptraf、ntop等 也可以用tmux结合使用:http://alias.sh/htop-and-iotop-tmux-split-windows

其它

还有很多可以干的事,比如为网关配置squid透明代理缓存服务器,本人测试了下,由于命中率较低,对性能提高没那么大就取消了

还可以统一在网关上配置科学上网:http://hong.im/2014/03/16/configure-an-openwrt-based-router-to-use-shadowsocks-and-redirect-foreign-traffic/