Posts Tagged ‘TUN/TAP’

CentOS VPS 安装 OpenVPN

Wednesday, February 3rd, 2010

最近频繁在CentOS的VPS上安装OpenVPN,安装过程中还是颇有周折。首先是要和客服人员沟通开通TUN/TAP、iptables和NAT。有的VPS只开通iptables却没有NAT的支持,iptables设置postrouting的时候还是会失败。不管你在开通的时候怎么要求,VPS开通的时候还是要提交个ticket来处理这些事情。

默认CentOS的源里面只有很少的软件,需要安装EPEL(Extra Packages for Enterprise Linux),这样源里面的就有openvpn了。

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

然后再执行安装openvpn的命令。

yum install openvpn

剩下的配置文件和别的一样,启动iptables的命令是:

#1.2.3.4改成VPS分配的Main IP
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 1.2.3.4

这次要再评论photonvps.com一下,购买的VPS分配的IP被Google误认为是德国的IP,看Youtube的时候总是有些影片受限制,看hulu.com的时候就没有什么问题。跟他们沟通更换IP,最后到另外一台机器上新安装了一个VPS。觉得photonvps.com的服务还是不错,是值得推荐的一家VPS厂商。

—————————————————————————————–
杯具了,新换的IP被Google认为是法国的IP….

在Gentoo安装OpenVPN Server

Wednesday, January 6th, 2010

以前的一篇关于OpenVPN在Gentoo上运行需要编译内核的TUN/TAP选项,如果仅仅是使用OpenVPN作为客户端没有什么问题,要用作OpenVPN Server就需要安装iptables,并且编译对iptables支持的新内核。

iptables内核的编译选项在:

Networking options  --->
    [*] Network packet filtering framework (Netfilter)  --->
        Core Netfilter Configuration  --->
            <*> Netfilter connection tracking support
            -*- Netfilter Xtables support (required for ip_tables)

在这个下面有很多个match support,搞不清楚到底哪个和openvpn有关,所以全部选上。

安装openvpn的命令:

emerge -avt openvpn

到/usr/share/openvpn/easy-rsa/目录下制作证书文件,这个过程和在Ubuntu下是一样的,请参考Ubuntu Server下安装OpenVPN Server。将生成好的配置文件拷贝到/etc/openvpn下,余下的设置过程和在Ubuntu上是一样的,只不过配置文件的名字要改为openvpn.conf,这个配置文件的名字是可以通过编辑/etc/init.d/openvpn这个脚本进行修改的。

修改/etc/sysctl.conf文件中的net.ipv4.ip_forward = 0,将0改为1,并用命令sysctl -p让其立即生效。然后执行:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

iptables的命令能否正确执行,检验了内核的编译结果。如果不放心,最好将NAT有关的选项都编译进去。

Ubuntu Server 安装 OpenVPN Server

Wednesday, January 6th, 2010

本来想写一篇在Gentoo下安装OpenVPN Server的文章,可是Gentoo下还没有测试成功,所以先写一篇Ubuntu Server下安装OpenVPN Server。OpenVPN在Linux下作为Server还是Client,就看配置文件怎么写了。

Ubuntu下安装OpenVPN还是那句经典的apt-get:

sudo apt-get install openvpn

配置证书的过程稍微复杂一点,先拷贝/usr/share/doc/openvpn/examples/easy-rsa/2.0目录到/etc/openvpn目录下或者home目录里。修改目录里面的vars文件中的几个配置项:

export KEY_COUNTRY=""
export KEY_PROVINCE=""
export KEY_CITY=""
export KEY_ORG=""
export KEY_EMAIL=""

注意:KEY_COUNTRY使用2个大写字母来表示国家。

source ./vars
./clean-all
./build-ca
./build-key-server <servername>
./build-key <clientname>
./build-dh

build-ca是创建根证书,除非是打算重置全部的证书,否则第一次运行完这个命令后就不要再运行了。build-key-server和build-key的命令可以多次运行,最好是为每一个用户做一个client的key。

拷贝示例的server.conf文件到/etc/openvpn目录,进行修改:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz  /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz

server.conf文件中对每个选项都有详细的解释,根据自己需要进行修改。下面是一个删除注释的配置文件示例:

#OpenVPN的监听地址
local xxx.xxx.xxx.xxx 
#OpenVPN的监听端口
port 1194 
#使用UDP Server
proto udp
#使用tun通道 
dev tun 
#相对路径 /etc/openvpn
ca ca.crt 
cert server.crt
key server.key
dh dh1024.pem
#OpenVPN的子网地址
server 10.8.0.0 255.255.255.0
#客户端的Internet访问使用OpenVPN通道 
push "redirect-gateway def1" 
#Windows客户端会使用此DNS地址
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
#记录客户端分配的ip地址情况,如果OpenVPN服务重启,
#客户端重新连接的时候会按照此文件分配原先的地址。
ifconfig-pool-persist ipp.txt 
#每10秒ping一次,120秒内客户端没有动作就断开连接
keepalive 10 120
#客户端之间可以互相访问
client-to-client
#对OpenVPN链接进行压缩,客户端的配置文件必须同时使用
comp-lzo
#OpenVPN的用户和用户组
user nobody
group nobody
#如果user和group的用户和用户组没有访问key的权限
#避免产生权限不足的bug
persist-key
persist-tun
#日志文件
status openvpn-status.log
#日志文件的记录级别
verb 3

OpenVPN的安装设置完成,还需要设置数据包转发:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

这两个命令如果不执行,OpenVPN的客户端虽然能连接成功,但不能访问Internet。iptables需要内核的支持,如果在Gentoo系统下就需要编译内核的一些选项了。

在gentoo下使用openvpn client遇到kernel不支持TUN/TAP

Friday, October 23rd, 2009

openvpn会在系统内创建虚拟网卡,但是我默认安装kernel没有设置支持TUN/TAP,所以必须在内核里面重新加入这个模块的支持。

cd /usr/src/linux
make menuconfig

在菜单里面选择Device Drivers -> Network device support -> Universal TUN/TAP device driver support 为这个选项选择M。然后保存退出,进行编译:

make && make modules_install

安装openvpn后在/etc/openvpn目录编写你的openvpn.conf文件,下面的例子是个client的示例:

client
 
dev tun
proto udp
remote my-server-2 1194
resolv-retry infinite
nobind
persist-key
persist-tun
 
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/client.crt
key /etc/openvpn/client/client.key
 
log /var/log/openvpn/client.log
status /var/log/openvpn/client-status.log
comp-lzo
verb 3