Author: Ken

  • OpenVPN Server on FreeBSD

    和Centos有点区别。

    1. 使用pkg安装openvpn:pkg install openvpn
    2. 使用easy-rsa生成数字证书,生成openvpn server配置文件,默认的即可,我们使用udp协议,把服务端口修改为443,这样比较通用。
    3. 修改rc.conf,启用pf做nat,启用gateway,增加openvpn配置。pf_enable=”YES”
      pf_rules=”/etc/pf.conf”
      pflog_enable=”YES”
      pflog_logfile=”/var/log/pflog”
      gateway_enable=”YES”
      openvpn_enable=”yes”
      openvpn_configfile=”/usr/local/etc/openvpn/2.0/conf/server.conf”
      openvpn_if=”tun”
    4. 增加pf.conf配置文件,这里我们的FreeBSD运行在ESXI上,所以网卡是vmx0,openvpn clients的网络是10.9.0.0/24,服务器的IP地址是192.168.0.99:#/etc/pf.conf
      if=”vmx0″
      vpn_if=”tun0″
      vpn_net = “10.9.0.0/24″icmp_types = “echoreq”
      open_tcp = “{22}”
      open_udp = “{443}”
      # wan ip
      ip = 192.168.0.99
      set block-policy drop
      set skip on lo0
      set limit { states 10000, frags 5000 }
      set loginterface vmx0
      set optimization normal
      set require-order yes
      set fingerprints “/etc/pf.os”
      set ruleset-optimization basicscrub in all fragment reassemble random-idnat on $if from $vpn_net to any -> $ip

      block log all
      block return

      antispoof quick for $if
      pass in quick proto udp from any to port 443 keep state label “openvpn”

      # Pass stuff on the VPN interface
      pass quick on $vpn_if keep state

      pass in on $if proto tcp from any to any port 22 keep state

      pass in on $if proto tcp from any to any port $open_tcp keep state
      pass in on $if proto udp from any to any port $open_udp keep state

      pass out quick all keep state

      pass in on $if inet proto icmp all icmp-type $icmp_types keep state

    5. 在sysctl.conf中增加IP forwarding配置:net.inet.ip.forwarding=1
    6. 可以启动了:service openvpn start
    7. 其实大同小异,不过最近发现zfs和jail都是蛮不错的好东西,大神的设计往往超越了时代,却是那些简陋而充满bug的设计流行于世间。

     

  • 教育网真是一个独特的存在

    最近有传闻要封锁VPN业务,大概是工信部想在运营商做白名单,这个口风出来,我觉得是针对大量跨国公司的,因为他们在自己公司的局域网内开通了可以访问境外网站的vpn通道,让员工在公司的时候可以自由访问互联网,要针对个人行为的话,封锁起来成本太高,ss这么多年了,也没见能封锁。

    很多人觉得从技术上当局没有办法赢过跨国公司,但实际上这个是很容易实现的,跨国公司无非是使用工业协议ike+ipsec,有固定的端口(udp500和udp4500),把端口一屏蔽,就熄火,再不行,做个udp端口白名单,从技术上总是有方法去实现,只是成本可能会有点高,路由器上的access-lists会消耗大量的cpu资源(最近在机房屏蔽蠕虫的时候发现这个问题),但是,把IP地址null route已经是最高效的方式了,null port估计消耗会更大。

    但udp端口白名单是不太可能实现的,为什么呢?因为ipv4地址不足,很多网络都经过了二次nat甚至三次nat,端口都被转换了好几次,如果有个udp端口白名单,呵呵。

    所以,他们只能屏蔽目的端口,这个端口目前看来是无法修改,但是它理论上来讲是可以修改的。

    维持一个白名单,并不是技术问题,因为当局有的是金钱可以去实现,法规的问题更严重一些,如果按照既有的行事规则,鸡鸣狗盗之类,那完全可能会出现诸如某利益集团利用来打击商业竞争对手而引起对手财团向当局告状的情形,如果弄一个法规出来,那就会导致信息公开,引来开历史倒车的恶评,再者,就是当局愿意为了封锁付出多少经济增长代价了,政策一出,必然会引起众怒,国际媒体开始为“投资环境急剧恶化”而呼号。

    还有一个重要的角色就是厂商,CiscoJuniper虽然帮着做了不少恶,但是封锁工业vpn是不是会触及到他们的利益,这个很难说,毕竟工商业方面应用太过广泛,一方面,当局可能会要求他们对自己的客户隐藏vpn封锁的真相,另一方面,他们总不可能在自己网站贴个公告说你们的vpn都用不了,并不是因为我们的原因而是?

    有军方背景的迈普公司生产的路由器,和Cisco的配置几乎同出一辙,抄袭得一摸一样,但是也没见Cisco去告它啊, 大抵因为知道谁是它爹,大陆ssl vpn装机量第一的国产商深信服,也被好些大学给下架了,因为上千个用户高负荷的时候它无法进行承载。

    教育网真是一个独特的存在,不但有自己的国际出口,而且里面啥都可以有,哈哈哈。

    但是,最应该被封锁消息的,不是学生吗?

  • 所谓客观,也只是看起来自觉合理的偏见

    每年的五月底,就会冒出一些看似奇怪的事情来,我觉得,他们一定是故意黑,特意让人不断的想起这个日子,例如下个周末公司组织要去西柏坡,3号去,4号回,这些年的这个日子一般都不在周末,而这恰好是周六和周日,于是看起来有人又有点紧张,每每这个时候,我就会很容易的想起苏联,那就是,他们知道他们在说谎,我们也知道他们在说谎,而且他们知道我们知道他们在说谎,反正没人捅破窗户纸就是了。

    关于去西柏坡,我并不反感,只不过每次所谓需要过夜的团建都需要和人分享房间让我很不满意,打呼噜的太多,而我睡眠一直都不太好。

    而各个社交网站这几天不能更改背景色为黑色或者白色,不能发蜡烛图标,也是心照不宣的存在啊,他们知道他们在说谎,我们也知道他们在说谎,你们也知道他们在说谎,而且他们知道我们知道他们在说谎,你们也知道我们知道他们在说谎,反正没人捅破窗户纸就是了。

    这个话题我并不觉得沉重,只不过有点绝望罢了,然而这种绝望并不是来自于人的自然性,无非是因为被不同的宣传影响,来自于人的社会性,历史的进程往往都是各说各话,所谓客观,也只是看起来自觉合理的偏见罢了,任何一个世界都没有公平和公正可言,权利和金钱才是永恒。