Showing posts with label Network. Show all posts
Showing posts with label Network. Show all posts

Dec 14, 2010

Important Points to Know About IPV6

We are slowly approaching the implementation of IPv6 in a mass scale and thus we must be ready to learn some significant differences over IPv4. Also, some IP addressing terms will start to appear with increasing frequency in our day to day work. So let’s see some notable concepts that you need to know about IPv6.
– IPv6 addresses are 128 bits long and are expressed in hexadecimal numbers.
– IPv4 addresses are 32 bits long and are represented as four octets separated by periods. Each octet of the address is represented in decimal, taking a possible value between 0 and 255.
Example: 192.168.1.1
–  IPv6 addresses are 128 bits long and are expressed in hexadecimal numbers. Every four hexadecimal characters are separated by a colon.
Example: 2001:75b: a12c: 6: c0: a8: 1:1
– IPv6 uses different IP address types. One of those types is the link local address that configures itself at every interface that has enabled the IPv6 protocol. The local link interface addresses always begin with FE80.
– Similarly, multicast addresses always start with FF0x (the x represents a hexadecimal digit letter between 1 and 8).
Zeros at the beginning of each portion of the address may be deleted. IPv6 addresses are expressed as 32 hexadecimal digits separated into 8 groups of 4 digits separated by a colon. When one of these 8 groups of digits begins with zero, it can be eliminated.
For example:
FE80: CD00: 0000: 0CDE: 1234: 0000: 5678: 0009
If we delete the zeros at the beginning of each section the address becomes:
FE80: CD00: 0: CDE: 1234: 0: 5678: 9
–  When there are zeros in several positions, they may also be deleted.
We often find addresses that have multiple sections of zero. These sections can also be suppressed to a single zero.
For example:
FE80: CD00: 0000:0000:0000:0000:0010:0127
In this scenario we can eliminate consecutive groups of zeros and also suppress leading zeros in some groups. Thus, the address becomes:
FE80: CD00 :: 10:127
The double colon expression :: tells the operating system that everything between them are all zeros.
You must be careful because you can delete an entire section only when fully made up with zeros. Also remember that the double colon expression :: can be used only once in each IP address representation.
– There is only one loopback address. IPv4 has reserved the entire network 127.0.0.0 / 8 (it is customary to use address 127.0.0.1) as the loopback address to point to the local machine.
In IPv6 there is also a loopback address, but in this case is only one and represented with :: 1
Or to put it in the conventional way (full format):
0000:0000:0000:0000:0000:0000:0000:0001
– No subnet mask is needed.
In IPv4, each port is identified by an IP address and subnet mask.
In IPv6 you can also implement subnets but this is not necessary. Of the total of 128 bits that make up an address, the first 48 identify the network prefix, the next 16 are the subnet ID, and the last 64 are the interface identifier. Since 16 bits are reserved for the local portion of subnets, in an IPv6 network it is possible to generate 65536 subnets.
– DNS service is also available in IPv6.
In IPv4 DNS service uses the A records to map IP addresses to names. In IPv6 AAAA records are used (also called Quad A). The domain ip6.arpa is used for reverse name resolution.
– IPv6 addresses can connect over IPv4 networks.
The design of IPv6 allows multiple forms of transition, enabling the development of IPv6 networks even when the route must pass through IPv4 networks. These transitional forms use tunneling over IPv4 networks. The two most popular technologies for this are Teredo and 6to4.The basic idea is that IPv6 packets are encapsulated within IPv4 packets to traverse these networks.
– Many vendors are already able to use IPv6.
Microsoft operating systems from Windows Vista and Windows 7 have IPv6 installed by default together with IPv4 (also can be installed on Windows XP, but is not there by default).
Also, Unix and Linux operating systems support IPv6 for years.
Regarding network vendors, Cisco IOS supports IPv6 many years ago, but it is not enabled by default and needs to be explicitly enabled with the command “ipv6 unicast routing”.
– Windows support for IPv6 has some peculiarities.
When a client wants to address a specific port, for example, an IP Address and Port number in Internet Explorer is separated by a colon:
http://172.16.100.1:8543
In IPv6, as the colon is part of the description of the IP address, the IP and Port separation is done using square brackets:
http:// [FE80: CD00: 0: CDE: 1234:0:2567:9AB]: 8543
This format is not supported on Windows machines because when you use colons this is interpreted as referencing an internal drive in the computer.
To solve this problem, Microsoft has established a special domain for the IPv6 address representation in Windows machines. In this way, if you reference an IPv6 address using Universal Naming Convention, the digits must be separated by dashes instead of colons and at the end of the address you must add the domain name “ipv6-literal.net”.
An example, instead of:
http:// [FE80: CD00: 0: CDE: 1234:0:2567:9AB]
You should use:
http://FE80-CD00-0-CDE-1234-0-2567-9AB.ipv6-literal.net

Qos Interview Questions?

1. What is QOS and why it is required?
2. What is layer2 qos and layer3 qos?
3. What is tail drop?
4. Describe methods of QOS?
5. What is hardware QOS and Software QOS?
6. Difference between a policer and a shaper?
7. What is token bucket algorithm?
8. Where to define the markings?
9. Does QOS increase the load of the equipment?
10. What is TOS and IP DSCP?
11. what are the different classes available?
12. How to calculate the decimal value of classess?
13. What is the difference between priority and bandwidth command?
14. What is low latecy queueing?
15. what is class based weighted fair queuing?
16. What is first in first out queue (FIFO)?
17. What is fair queue?
18. If I give teh ip precendence five to data traffic, what will happen?

Dec 8, 2010

dd-wrt pptp设置

一直以来都希望让家里的电脑能永远保持互联的状态,前几天买了台路由器刷DD-WRT,终于能够如愿。

自己用的版本是v24 sp2。开始打算使用openvpn,不过这样就成了三层的VPN。L2TP又没有看到可以设置的,最后决定用PPTP。

不过也不是那么顺利,看了无数人十分高效的成功经验后,我的PPTP还是无法正常工作。终于,昨晚在搞了很久以后,发现只要只要将PPTP里面的强制认证关闭就可以了⋯⋯真无奈⋯⋯

Dec 6, 2010

不错的介绍DNS的视频

非常易懂~当然,是在你英语听力没问题的前提下

Nov 30, 2010

OpenDNS和Google DNS,不一定真的适合我们

为什么不用?用了解析速度快,能防ISP劫持,能翻墙,能这能那。真的是这样吗?

1.大家最关注的,翻墙,防止DNS被劫持。

资深不资深的玩家肯定都知道某墙的事情。用了OpenDNS之类后,真的能防止被某墙劫持域名吗?恐怕太小看某墙了吧。只要是DNS的UDP包经过旁路设备,直接就会被篡改。不信?看看结果

正常请求一个被劫持的域名,当然是劫持没商量了

$ dig hen.bao.li 
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;hen.bao.li. IN A 
;; ANSWER SECTION: hen.bao.li. 85697 IN A 78.16.49.15 
;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) 
;; WHEN: Mon Dec  7 23:18:48 2009 
;; MSG SIZE  rcvd: 44

$ dig hen.bao.li
; <<>> DiG 9.6.0-APPLE-P2 <<>> hen.bao.li
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50859
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;hen.bao.li. IN A
;; ANSWER SECTION:
hen.bao.li. 85697 IN A 78.16.49.15
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Dec  7 23:18:48 2009
;; MSG SIZE  rcvd: 44

然后再看用了Google Public DNS后,照样劫持你没商量
$ dig @8.8.8.8 hen.bao.li 
; <<>> DiG 9.6.0-APPLE-P2 <<>> @8.8.8.8 hen.bao.li 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15485 
;; flags: qr aa rd ra
; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;hen.bao.li. IN A 
;; ANSWER SECTION: hen.bao.li. 86400 IN A 78.16.49.15 
;; Query time: 75 msec 
;; SERVER: 8.8.8.8#53(8.8.8.8) 
;; WHEN: Mon Dec  7 23:20:58 2009 
;; MSG SIZE  rcvd: 54
 
我们看看国外机器得出的真实结果
# dig @8.8.8.8 hen.bao.li 
; <<>> DiG 9.3.4-P1 <<>> @8.8.8.8 hen.bao.li 
; (1 server found) 
;; global options:  printcmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20845 
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;hen.bao.li. IN A 
;; ANSWER SECTION: hen.bao.li. 14400 IN A 69.163.142.44 
;; Query time: 252 msec 
;; SERVER: 8.8.8.8#53(8.8.8.8) 
;; WHEN: Mon Dec  7 23:25:12 2009 
;; MSG SIZE  rcvd: 44
 
可以看到,此路不通。想靠换国外DNS来翻墙的可以醒醒了。 2.解析速度快 Google DNS解析速度是挺快的,但OpenDNS就未必了
$ dig @208.67.222.222 http://www.dnspod.com 
; <<>> DiG 9.6.0-APPLE-P2 <<>> @208.67.222.222 http://www.dnspod.com 
; (1 server found) 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17404 
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION: ;www.dnspod.com. IN A 
;; ANSWER SECTION: http://www.dnspod.com. 600 IN CNAME http://www.dnspod.com.cdnudns.com. http://www.dnspod.com.cdnudns.com. 300 IN A 61.172.249.96 http://www.dnspod.com.cdnudns.com. 300 IN A 218.244.147.137 
;; Query time: 608 msec 
;; SERVER: 208.67.222.222#53(208.67.222.222) 
;; WHEN: Mon Dec  7 23:29:01 2009 
;; MSG SIZE  rcvd: 101


3.最重要的问题,访问网站真的快吗?

相信不少人一定记得之前QQ用户出现过一次“免费出国”,当然,现在这个情况也会出现在用了OpenDNS和Google Public DNS用户的身上。 大家都知道中国特色的互联网,南北分家,互访速度巨慢无比,网站的维护人员绞尽脑汁的想办法解决互联互通的问题,加速大家的网站访问速度。 网站加速访问有好几种办法,有钱的大公司就用BGP AnyCast,但并不是人人都做得起(有自己的IP段,做一次BGP广播X-XX万,要达到最佳访问效果必须要做N次BGP广播,最后费用有可能达到 XXX万)。没钱的公司就只能用智能DNS了,包括自建的DNS,或者直接用DNSPod这样的现成方案,其实原理都一样。

智能DNS其实并不是太智能,它靠的预先分配好几个区域,然后根据用户请求的IP来判断用户属于哪个区域,之后返回对应区域的服务器IP。正常情况下,用户在国内上网,用的是ISP自动分配的DNS,用户域名解析请求发给ISP的DNS,ISP的DNS又发给DNSPod这样的域名授权DNS。 DNSPod这时候拿到的IP地址基本是ISP的DNS地址,所以很方便的就能判断出用户所在的区域,并把结果返回给用户。 但如果这个时候,用户用的是OpenDNS或者Google DNS,因为这些服务器的IP地址是在国外,并且N多老外都在用,智能DNS就不好判断该怎么返回了。返回国外的IP,影响国内用户的访问速度。如果返回国内的IP,影响到其他老外的访问速度。并且如果返回国内的IP,那么该到底返回电信还是网通的IP呢?用户属于哪个省份?无从判断。那么最后只能人多决定人少,返回国外的服务器IP。 返回国外IP的结果是,用户被指向网站在国外的服务器,访问网站巨慢。 本来想找几个典型例子的,但找了一圈回来,发现国内的大公司在这上面烧钱可是一点都不心痛,全部是BGP。要么就是不搭理国外用户,没针对国外用户单独进行解析,一概解析到电信的服务器去。

拿Google来当例子吧。我是网通用户,使用网通自带的DNS,解析www.google.com得到以下结果
$ dig http://www.google.com
...省略部分内容...
;; ANSWER SECTION:
http://www.google.com.  48102 IN CNAME http://www.l.google.com.
http://www.l.google.com. 300 IN A 216.239.61.104

如果我用了OpenDNS的话,那么我得到下面的结果 
$dig @208.67.222.222 http://www.google.com
...省略部分内容...
;; ANSWER SECTION:
http://www.google.com.  30 IN CNAME google.navigation.op

4. 怎么使用?

那么到底这两个DNS服务器有没有办法是用呢?有!这是一个肯定的回答。

首先,被污染的域名返回的地址在一个范围内,据我自己的收集在10个IP左右。首先向本地的DNS请求,当返回结果在这些地址中时,再通过代理的方式取得结果

或者使用类似autoproxy的方式,匹配列表的域名通过代理,其余均直接使用本地服务器解析。而我自己开发的smartVPN就是使用这种方式工作,收到正确的地址后再加入到路由走VPN,达到最节省VPN流量的目的。

Nov 28, 2010

使用GeoIP在Wireshark中显示IP的地理位置

本来想直接贴视频,结果发现搞不定~~

那还是贴地址吧:
http://www.securitytube.net/Setting-up-GeoIP-to-Track-IP-Address-Locations-in-Wireshark-video.aspx

Nov 25, 2010

Cisco ISP Essentials

思科网站上下载的免费电子书,不过我忘记下载链接了……囧

点击下载

Nov 24, 2010

PPTP和L2TP的区别

PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。尽管两个协议非常相似,但是仍存在以下几方面的不同:

1.PPTP要求互联网络为IP网络。L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATM VCs网络上使用。

2.PPTP只能在两端点间建立单一隧道。L2TP支持在两端点间使用多隧道。使用L2TP,用户可以针对不同的服务质量创建不同的隧道。

3.L2TP可以提供包头压缩。当压缩包头时,系统开销(overhead)占用4个字节,而PPTP协议下要占用6个字节。

4.L2TP可以提供隧道验证,而PPTP则不支持隧道验证。但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道。

总之,对于一般的使用者来说,L2TP有更强的穿透率,更好的压缩,更好的加密(双层加密),所以如果你在使用PPTP失败的时候可以尝试L2TP。

Nov 22, 2010

架设PPTP VPN及在Linux上远程连接VPN

本文所涉及的运行环境:远程服务器为 VPSLink 上低配置 Xen VPS ( 注意,OpenVZ VPS 是不能安装 PPTP VPN 的),Linux 系统为 Ubuntu 9.04 ,本地服务器为 Ubuntu Server 9.10 。

1. 如何快速搭建一个VPN(pptp)
# 安装服务器端软件
apt-get install pptpd

# 配置IP地址范围,编辑/etc/pptpd.conf,在最后添加如下地址:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

# 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。
# 增加一个用户,编辑/etc/ppp/chap-secrets,在下面增加类似的条目:
username pptpd password *

# 重启pptpd服务
/etc/init.d/pptpd restart

# 编辑:/etc/ppp/options,在里面找一下”ms-dns”项目:
ms-dns 8.8.8.8
ms-dns 8.8.4.4

#允许转发,编辑/etc/sysctl.conf,看一下net.ipv4.ip_forward参数是不是1,或直接执行以下命令来查看
sysctl net.ipv4.ip_forward

# 如果输出为 0 的话就要修改 /etc/sysctl.conf 中的 net.ipv4.ip_forward ,把 0 改为1,然后执行以下命令。
sysctl -p

# 最后,运行一下这条命令来打开iptables的转发支持:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

# 并把这两条加入到 /etc/rc.local 中的 exit 0 行前面,这样重启后就无需再执行了。

# 好了,PPTP VPN 到此就架设好了,你现在可以用 Windows 自带的 VPN 连接工具来连接了,这个应该非常简单。那么下面我再说说如何在 Ubuntu 上手工配置 PPTP VPN 连接吧。

2 .如何在 Linux 上连接 PPTP VPN
# 安装 Linux 上的 pptp 客户端
apt-get install pptp-linux

# 把下面两行加入 /etc/rc.local , 放在 exit 0 这一行的前面
/usr/sbin/pptpsetup –create lable –server ip –username username –password password –encrypt
/usr/sbin/pppd call lable

# 说明:这两行命令是最简便的建立 PPTP 连接方式。

Label: 用户自定义
IP: 是 VPN 的 IP 地址
Username 及 Password :登录 VPN 的用户名和密码

# 把下面两行加入 /etc/ppp/ip-up 中,删除默认网关及把 VPN 服务器作为默认网关,也就是改变路由策略,把所以传输流量通过 VPN 线路来走。
/sbin/route add default gw 192.168.0.1
/sbin/route del default gw 原来的网关 // 原来的默认网关地址可通过 route 命令来获取

# 另外,如果你想把此服务器作为网关服务器的话,那就按照前面架设 PPTP VPN 一节中的方式,设置 net.ipv4.ip_forward 参数来打开包转发。并把下面两行加入到 /etc/rc.local 中。
/sbin/iptables -t nat -A POSTROUTING -s 内网IP/24 -o ppp0 -j MASQUERADE
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356

# 重启服务器,你可以用 ifconfig 看一下,会多出一个 ppp0 的网络接口了。另外,你可以 traceroute twitter.com 看一下,是否通过 ppp0 的网关出去的,如果是的话,就说明工作正常。

# 注意:在作网关服务器的时候,建议使用 Google 的 DNS ,国内很多 DNS 被污染了,无法正常解析 Twitter 等网站。

# 修改 /etc/resolv.conf 中,改为如下两行
nameserver 8.8.8.8
nameserver 8.8.4.4

CentOS 5 VPS配置pptpd为VPN服务器

VPS一般每个月也用不完流量,不用也是浪费,所以我们要榨干VPS,哈哈。(以下命令建立在64位CentOS 5上 ,并且 pptpd VPN需要内核支持mppe)

下面为配置命令:

先安装ppp和iptables.
yum install -y ppp iptables
然后下载pptpd.

64位操作系统.
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.x86_64.rpm

32位操作系统.
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm

安装pptpd

64位操作系统
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm

32位操作系统
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm

接下来编辑/etc/pptpd.conf文件,去掉下面两行的注释或者直接添加这两行
vim /etc/pptpd.conf
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

添加VPN用户和密码,按照下面格式.密码后的*号保留.
vim /etc/ppp/chap-secrets
username pptpd password *
设置DNS为Google的DNS.
vim /etc/ppp/options.pptpd
找到ms-dns改成.
ms-dns 8.8.8.8
ms-dns 8.8.4.4
编辑/etc/sysctl.conf文件,找到”net.ipv4.ip_forward=1″这一行,去掉前面的注释。没有就添加上.
net.ipv4.ip_forward=1
运行下面的命令让配置生效。
sysctl -p
重启pptpd服务
/etc/init.d/pptpd restart
最后开启iptables转发
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
最后设置iptables和pptpd开机自动启动
chkconfig pptpd on chkconfig iptables on
好了,下面可以用VPN自由呼吸了。

Debian/Ubuntu下搭建OpenVPN与客户端配置教程

下面介绍如何在Debian系统搭建OpenVPN服务器端以及如何配置Windows客户端。

服务器端
1.至少拥有一台VPS或独立服务器
2.基于Openvz的VPS只能安装OpenVPN,XEN可安装PPTP,但不在本文讨论范围不再赘述
3.检验是否支持Tun/Tap和nat,以Root登陆输入
cat /dev/net/tun
若返回cat: /dev/net/tun: File descriptor in bad state 则说明tun可用输入
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
若返回iptables: No chain/target/match by that name 则说明nat模块正常可用
若以上返回信息不符请联系客服要求开通Tun/Tap和iptable nat。
4.修改服务器DNS
vi /etc/resolv.conf
修改DNS为:
nameserver 8.8.8.8
nameserver 8.8.4.4
5.本想一步步写,但经友人提醒有个VPSNOC John Malkowski的Debian OpenVPN脚本基本我下面的步骤雷同且我的教程步骤过于复杂,考虑安装方便所以放弃原教程奉上一键安装脚本。
wget http://vpsnoc.com/scripts/debian-openvpn.sh
chmod +x debian-openvpn.sh
./debian-openvpn.sh
稍等片刻,依次出现需要填写内容:
国家(两个英文字母)
省份/州(两个英文字母)
城市(英文字母)
组织名称 (英文字母)
部门名称 (英文字母)
通用名  (英文字母)
姓名  (英文字母)
邮箱密码(英文数字组合)
凭证名  (英文字母)
按两次Y后,安装完成。
安装完成后root目录下会出现一个keys.tgz压缩包,使用Tunnelier或WinSCP将压缩包下载至本地,待用。
6.生产客户端证书
cd /etc/openvpn/easy-rsa/2.0
../vars
./build-key user1

将user1换成期望用户名,按照步骤5中信息填写方式,完成证书生成。至此服务器安装基本完成。

Windows客户端配置
1.下载OpenVPN:http://www.openvpn.net/index.php/open-source/downloads.html 下载最新版本的Windows Installer安装包。
2.运行安装,建议win7/vista 将openvpn安装至非系统分区,如:D:\net\openvpn。按过程中会出现安装网卡驱动(型号为:TAP-WinXX Apapter V9)安全警告,确认继续。
3.修改DNS,注意:是修改新增加的这个虚拟网卡后出现的新连接,如果你不知道是哪个无所谓,把所有连接的DNS都设置成OpenDNS或者GoogleDNS吧,步骤:
Win7 https://store.opendns.com/setup/operatingsystem/windows-7
Vista https://store.opendns.com/setup/operatingsystem/windows-vista
XP https://store.opendns.com/setup/operatingsystem/windows-xp
推荐使用Google DNS :8.8.8.8和 8.8.4.4替换OpenDNS的208.67.222.222 208.67.220.220。
4.解压从服务器上down下来的keys.tgz,解压至openvpn安装目录下的config目录,如:D:\openvpn\config。
5.运行桌面上的OpenVPN GUI图标(如果是win7/vista系统请以管理员身份运行)右击右OpenVPN图标点Connect
6.稍等出现分配完成后说明链接成功。
进入http://www.dnsstuff.com 测试下吧。

配置新用户
OpenVPN一个证书只能对应一个用户,如果你想给朋友开通OpenVPN需要现在服务器上配置一个客户端证书(服务器端配置的 6.生产客户端证书),然后修改*.ovpn文件,将其证书和配置打包发给你的朋友,并教其修改连接DNS,使用OpenVPN。
下面分步骤细说:
1.按照服务器端配置的步骤 6,生成客户端新证书
2.使用Tunnelier或WinSCP前往/etc/openvpn/easy-rsa/2.0/keys并下载刚生成的新证书,如:步骤 6中输入的是
./build-key user1

那么/etc/openvpn/easy-rsa/2.0 /keys文件夹下的应该会新增user1.crt,user1.key,user1.csr三 个文件,将这三个文件连同*.ovpn和ca.crt、ca.key三个文件一起下载到本地,用EditPlus或其他编辑编辑器打开下载下来 的*.ovpn文件将其中的
cert client1.crt
key client1.key
修改为:
cert user1.crt
key user1.key
保存,打包发送给你的朋友。
3.教其安装OpenVPN客户端,并解压*.opvn配置文件和证书至openvpn安装目录下的config目录中
4.教其修改DNS和使用OpenVPN。

OpenVPN 简介

OpenVPN 是一个具备完全特征的SSL VPN解决方案,能够进行大范围的配置操作,包括远程访问、站点-站点间VPN、WiFi安全及企业级远程访问解决方案,支持负载均衡,错误恢复及细粒度的访问控制。

OpenVPN通过使用工业标准SSL/TLS协议 实现了OSI 2层及3层安全网络扩展,支持灵活的基于证书、智能卡的客户端认证方法,允许通过在VPN虚拟接口上应用防火墙规则实现用户及组访问控制策略。 OpenVPN并非一个Web应用代理,也不能通过Web浏览器进行操作。

作为一个不错的关于OpenVPN的概念介绍,可以参考James Ynan在Linux Fest Northwest 上2004年发表的程序注释――理解用户空间VPN:历史、概念基础及实际应用(Understanding the User-Space VPN: History, Conceptual Foundations, and Practical Usage)。也可以参考Charlie Hosner的OpenVPN及SSL VPN革命(OpenVPN and the SSL VPN Revolution)。

OpenVPN 是一个开源项目,遵从GPL许可协议。商业许可对重新发布其基于OpenVPN的应用程序的公司也有效。获得更多信息请联系info@openvpn.net。

OpenVPN 能够运行于Linux、Windows 2000/XP及更高版本、OpenBSD、FreeBSD、NetBSD、Mac OS X及Solaris平台。

通过OpenVPN,你可以:
  1. 在任意IP局部网络或虚拟以太网适配器上通过单个UDP或TCP端口建立隧道;
  2. 使用一或多台机器配置可裁剪的、负载均衡的VPN服务器群以处理成千上万的来自VPN客户端的动态连接;
  3. 能够使用在OpenSSL库中所提供所有的加密、认证及证书特性以保护私有网络在Internet网络上的数据传输;
  4. 使用OpenSSL库所支持的任意加密算法、密钥长度或HMAC数字签名(用于数据报完整性检查);
  5. 先把基于静态密钥传统加密方法或基于证书的公钥加密方法;
  6. 使用静态、预先公有的密钥或基于TLS的动态密钥交换;
  7. 使用实时的自适配压缩及流量整形以管理链路带宽分配;
  8. 为动态公共点(如DHCP或拨号客户端)提供隧道传输;
  9. 无需显示定义防火墙规则为面向连接的防火墙提供网络隧道传输;
  10. 基于NAT的网络隧道;
  11. 通过虚拟的tap设备创建安全的以太网桥;
  12. 在Windows或Mac OS X系统上通过GUI界面控制OpenVPN。

OpenVPN与其它VPN有何区别?

OpenVPN的主要特征包括跨平台的可移植性、优秀的稳定性、成百上千或成千上个客户端支持的可伸展性、相对简单的安装过程、支持动态IP地址及NAT。

OpenVPN 提供一个设计为易于针对站点定制的可扩展的VPN框架,例如提供发布自定义安装包到客户端,或通过OpenVPN插件模块接口支持可选的认证方法(例如 openvpn-auth-pam 模块允许OpenVPN使用任意PAM认证方法认证客户端,这种方法可以单独使用,也可以与基于X509证书结合使用以进行认证)。

OpenVPN 提供一个管理接口,可以用于远端控制或中央控制一个OpenVPN守护进程。管理接口也可以用于开发基于GUI或web的前端应用程序。

在Windows平台上,OpenVPN能够使用Windows Crypto API从智能卡上读取证书或私钥。

OpenVPN 使用设计用于可保护被动攻击和主动攻击的工业强度的安全模型。OpenVPN的安全模型基于SSL/TLS进行会话认证及使用IPSec ESP协议用于基于UDP的安全隧道传输。OpenVPN支持X509 PKI (public key infrastructure)用于会话认证,TLS协议用于密钥交换,OpenSSL的加密算法无关的EVP接口用于加密隧道数据,HMAC-SHA1 算法用于认证隧道数据。

OpenVPN建立为可移植的, OpenVPN可以运行于Linux、Solaris、OpenBSD、FreeBSD、NetBSD、Mac OS X及Windows 2000/XP,因为OpenVPN作为用户空间守护进程编写而非内核模块或对IP层的复杂变更,移植操作的简易性是值得留意的。

OpenVPN易于使用,通常,一个隧道的建立和配置可以通过一个单独的命令完成(无需任何必要的配置文件)。OpenVPN文档包含了的示例进行了详细解释。

OpenVPN 经过严格设计,并在不可靠的网络中进行了强度测试。OpenVPN的一个主要的设计目标就是在正常操作和错误恢复情况下IP层都能够快速响应。这意味着如果IP层断开5分钟,当它再次恢复时,隧道流量能够立即恢复,即使动态密钥交换在这期间已经过期。

OpenVPN 有着健壮的模块设计。所有加密都由OpenSSL库处理,所有IP隧道功能都由TUN/TAP虚拟网络驱动提供。

模块化的好处是显而易见的,例如,OpenVPN可以与新版本的OpenSSL库动态链接并立即能够使用其在新版本中所提供的新功能。例如,当 OpenVPN基于最后版本的OpenSSL(0.9.7)编译时,它能够使用新的加密算法,如AES-256(高级加载标准,256位密钥),以及 OpenSSL特定目的的硬件加速器优化加密、解密及认证性能的加密引擎功能。

同样地,OpenVPN的用户空间设计易于移植到任何包含TUN/TAP虚拟网络驱动的OS中。

OpenVPN 运行速度很快,在Pentium II 266MHz机器上运行Redhat 7.2 ,使用基于TLS的认证方法,Blowfish加密算法,SHA1 用于隧道数据认证,当隧道传输一个巨大的,经过预先压缩文件的FTP会话时,OpenVPN达到了每秒(CPU时间,包括内核及用户态时间)1.455MB的收/发传输速度。

OpenVPN提供了用于控制VPN隧道的安全参数的选项,同时提供了用于保证服务器本身安全的选项,例如—chroot用于限制OpenVPN守护进程能够访问的文件系统部分,–user 及—group选项用于降低守护进程在初始化之后的优先级,–mlock用于确认密钥原始内容及隧道数据从不被分页到磁盘上,从而避免被后期恢复。

为什么先把TLS作为OpenVPN的根本认证及密钥协商协议呢?TLS是SSL协议族的最后成果,最初由Netscape开发用于他们最初的安全 web浏览器。多年来,TLS及其SSL前身已经在web上得到了广泛应用,并得到了深入的弱点分析。这些分析使得它不断被加强,从而形成如今的协议,SSL/TLS被认为是最强壮及最成熟的安全协议之一。因此,我们相信TLS是作为VPN产品认证及密钥交换机制的极好的先把。

OpenVPN 支持IPSec或PPTP吗?

目前被广泛应用的VPN实现中有三个主流:SSL、IPSec及PPTP。OpenVPN是一个SSL VPN,因此并不与IPSec、L2TP或PPTP兼容。

IPSec协议设计为内核空间IP栈的修正,不同的操作系统需要其自身的IPSec实现。

相对而言,OpenVPN的用户空间实现允许跨操作系统及处理器体系、防火墙及NAT友好操作、动态地址支持、多协议支持(包括协议桥接)的移植。

优点与缺点并存,OpenVPN的主要优点在于可移植、易于配置及与NAT和动态地址兼容。OpenVPN的安装和使用与其它安全相关的守护进程软件,例如SSH相似。

由于历史因素,IPSecr的优点在于获得了众多厂商的支持,虽然OpenVPN也逐渐开始致力于硬件设备的支持。

PPTP协议的优点在于其在Windows平台预装了客户端,密码分析专家已经透露了其安全弱点。

OpenVPN符合标准吗?

作为一个用户空间VPN守护进程,OpenVPN与SSL/TLS、RSA证书及X509 PKI、NAT、DHCP及TUN/TAP兼容。

OpenVPN与IPSec、IKE、PPTP或L2TP并不兼容。

Q: OpenVPN 隧道能够基于TCP连接传输吗?
A: 是的,OpenVPN 1.5以上版本均支持基于TCP连接的隧道传输。

Q: 我是否能够使用web浏览器作为OpenVPN客户端?
A: 不可以,虽然OpenVPN使用SSL/TLS协议用于安全传输,OpenVPN并不是一个Web应用代理。它是一个OSI 2层或3层Internet网络隧道解决方案,要求OpenVPN同时安装于客户端和服务器端。

Nov 19, 2010

smartVPN项目开发记录 (四)

仔细想了一下,比起把虚假地址指向黑洞外,先将需要代理的地址放入代理更加重要。所以先不考虑黑洞路由的功能了。

原来的代码换成了多线程去处理后,也老崩溃。自己不懂太多的编程,不过我认为用socket中提供的ThreadingUDPServer比自己去实现肯定要好得多。更改了基本所有代码后,崩溃的情况明显减少。

代码逻辑部分也调整了一下,原来对于需要代理的域名,也要做本地请求,然后从中剔除污染的地址。如果所有本地返回的结果都是污染过的,那就返回远程服务器的结果。不过后来自己想完全没这必要,对于需要代理的域名,直接使用远程服务器的结果,不需要的使用本地服务器结果。返回的远程结果提取出记录,由另外的线程处理。这样对效率是由提升的(至少我直觉如此)

而针对可能有很多人使用免费限流的VPN时,可能会同时拥有多个VPN情况(我就是如此),加入了支持多个VPN的功能。比如有A,B,C三个VPN,那么第一条路由指向A,第二条指向B,第三条指向C,第四条指向A……这样可以相对比较均匀的使用多个VPN的流量。

Nov 17, 2010

smartVPN项目开发记录 (三)

……嗯,这下搞笑了。

windows居然不支持黑洞路由!google后发现只能在同网络中找一个未使用的地址作为下一条来完成这个功能,但我觉得这个只能人为指定,程序是无法准确判断的。所以……真是杯具啊

不过去往制定目的地使用VPN的功能倒是完成了。改用线程方式后稳定性提高了很多,但是不是还是出错,烦啊。

smartVPN项目开发记录 (二)

昨天基本搞了一天,有点小结果:
1. 已经能够对域名的返回结果进行判断
2. 使用nslookup来测试已经成功能过滤掉GFW污染的结构
3. 优先返回本地ISP返回的解析结果

不过测试下来,又发现了如下一些问题:
1. nslookup测试基本无问题,不过实际使用过程中发现经常失去响应,必须重启程序
2. 经常无缘无故的就挂了……

还有一些设想的功能没有实现:
1. 根据结果增加路由
2. 判断哪些域名需要使用VPN

对软件开发完全就是一头雾水……试试能不能采用多线程的方式来解决一些问题。至于原因嘛,我也不是很清楚啊……囧

Nov 16, 2010

smartVPN项目开发记录 (一)

昨天想了想是否能结合autoproxy来动态加入路由(帖子在这里),想到有个scapy这个非常不错的库,便想自己尝试一下。

不过在scapy尝试收发DNS包的时候,发现返回的包在DNS部分显示为Raw load


后来调试了好久,发现是pton_ntop.py文件中有问题。查看第63行,居然……错误这么明显,于是自己把它改过来:

60 def inet_ntop(af, addr):
61     """Convert an IP address from binary form into text represenation"""
62     if af == socket.AF_INET:
63         #fix by Ken Mercus Lai
63         #return inet_ntoa(addr)
63         return socket.inet_ntoa(addr)
改动之后再次运行,这下结果正常了:

Nov 15, 2010

VPN,可以结合SSH的优势吗?

VPN与SSH是常用的加密数据的方式(不限于凸墙),区别大致如下(原文在这里):

SSH方式:
通过SSH连接,在本地与远程服务器之间建立一个加密的管道(Tunnel),SSH客户端监听本地端口,形成SOCKET5代理。由于IE对 SOCKET5代理不好,大家一般都是用FireFox。直接将FireFox设置Socket5代理就是可以正常使用的。但是这样,上国内网站也会绕道国外,影响速度。好在FireFox有大量优秀的插件,FoxyProxy和AutoProxy是很常用的通过URL筛选决定是否通过代理访问网站的插件,后者用的尤其多。

VPN方式:
VPN其实也是在本地与远程服务器之间建立了一个加密的通道,但是,与SSH不同的是,VPN客户端会虚拟一个网卡出来(这个虚拟的网卡连接的就是刚才说的那个加密通道),然后修改路由,使流量从加密通道走,达到凸墙的目的。当然,VPN也存在跟SSH相同的问题,如果访问国内网站,会绕道国外,速度很慢。聪明的人们又想出了办法:连接了VPN的电脑相当于有两块网卡,只要让国内流量从真实网卡走而国际流量从虚拟网卡走,这个问题就解决了。实际的操作就是手工加入国内IP的路由,让这部分流量直接走本地连接来搞定。

在解决绕道的问题上,大家可以看出SSH方式和VPN方式的不同了,SSH方式可以在URL的级别上筛选网址走加密通道,而VPN方式只能筛选IP。

举个例子,假设xxx是某强屏蔽的关键字,SSH代理+AutoProxy可以做到使http://www.abc.com/xxx走代理,而http://www.abc.com/yyy不走代理,这是VPN方式力所不及的。当然,VPN方式也有它得天独厚的好处,就是不用对应用软件进行任何设置即可使用,这对一些根本没法设置代理的应用软件是莫大的福音,这也是SSH方式力所不及的。

简单的来说,SSH在7层,VPN在3层。至于VPN的好处在上面引用的文字中就说的很明白了——不用对应用软件进行任何的设置。换句话说,只要去往某一目的的路由是指向VPN的,那么所有去往此目的地的路由都将自动生效,而基于7层的SSH没有此能力。

我的考虑是,能不能基于某些现有的SSH代理的处理方式,动态的设置VPN路由,这样不失VPN的特点,又能结合SSH的吸收优势。当然,实际情况肯定还是不能完全像SSH一样灵活。但至少比采用一刀切的方式——国外IP都走VPN——更加灵活。

基本思路如下:利用autoproxy的列表,使用DNS代理收集哪些IP地址需要使用VPN(同时可以防止DNS污染)。对于需要代理的目的地址(匹配autoproxy列表的项),创建路由指向VPN。同时对于DNS污染的地址,直接指向黑洞,以免出现可能的安全问题。

CCDE推荐阅读的RFC文档

包括了Cisco中推荐的所有RFC文档,还加入了Petr Lapukhov推荐的3篇。

由于在kindle上阅读pdf的页面翻页和文档本身不同,而且还有等宽字体的问题。所以把文档都转换成了PDF格式了。

点击下载(Click Here)

Nov 11, 2010

电子书 The Base Damn Firewall Book Period

The Base Damn Firewall Book Period —— Cherie Amon & Thomas W. Shinder & Anne Carasik-Henmi
This book is essential reading for anyone wanting to protect Internet-connected computers from unauthorized access. Coverage includes TCP/IP, setting up firewalls, testing and maintaining firewalls, and much more. All of the major important firewall products are covered including Microsoft Internet Security and Acceleration Server (ISA), ISS BlackICE, Symantec Firewall, Check Point NG, and PIX Firewall. Firewall configuration strategies and techniques are covered in depth.The book answers questions about firewalls, from How do I make Web/HTTP work through my firewall? To What is a DMZ, and why do I want one? And What are some common attacks, and how can I protect my system against them?The Internet's explosive growth over the last decade has forced IT professionals to work even harder to secure the private networks connected to it-from erecting firewalls that keep out malicious intruders to building virtual private networks (VPNs) that permit protected, fully encrypted communications over the Internet's vulnerable public infrastructure.The Best Damn Firewalls Book Period covers the most popular Firewall products, from Cisco's PIX Firewall to Microsoft's ISA Server to CheckPoint NG, and all the components of an effective firewall set up. Anything needed to protect the perimeter of a network can be found in this book. - This book is all encompassing, covering general Firewall issues and protocols, as well as specific products.- Anyone studying for a security specific certification, such as SANS' GIAC Certified Firewall Analyst (GCFW) will find this book an invaluable resource.- The only book to cover all major firewall products from A to Z: CheckPoint, ISA Server, Symatec, BlackICE, PIX Firewall and Nokia.

PDF格式
点我下载(Click Here)

Nov 9, 2010

电子书 Advanced IP Network Design

Advanced IP Network Design —— Alvaro Retana & Don Slice & Russ White
A core textbook for CCIE preparation Learn how to apply effective hierarchical design principles to build stable, large-scale networksExamine broken networks and discover the best methods for fixing themUnderstand how the right topology enhances network performanceConstruct the most efficient addressing and summarization scheme for your networkPrevent network failure by applying the most appropriate redundancy at the network core, distribution layer, and access layerExtend your network's capabilities through proper deployment of advanced IGP- and EGP-based protocolsAdvanced IP Network Design provides the solutions network engineers need to grow and stabilize large IP networks. Technology advancements and corporate growth inevitably lead to the necessity for network expansion. This book presents design concepts and techniques that enable networks to evolve into supporting larger, more complex applications while maintaining critical stability. Advanced IP Network Design provides you with a basic foundation to understand and implement the most efficient network design around the network core, distribution and access layers, and the common and edge network services. After establishing an efficient heirarchical network design, you will learn to apply OSPF, IS-IS, EIGRP, BGP, NHRP, and MPLS. Case studies support each protocol to provide you with valuable solutions to common blocks encountered when implementing an IGP- or EGP-based networkAdvanced IP Network Design offers expert-level solutions and help with CCIE exam preparation through the following features: practical discussion and implementation of CCIE-level networking issues; case studies that highlight real-world design, implementation, management, and troubleshooting issues; scenarios that help you put the presented solutions to use; and chapter-ending review questions and exercises.
PDF格式
点我下载(Click Here)

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger