分类目录归档:Ubuntu

Ubuntu 14.04 AOSP源码编译指南

1.先安装编译环境需要的软件

sudo apt-get install openjdk-7-jdk git-core gnupg flex bison gperf build-essential \

zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \

lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \

libgl1-mesa-dev libxml2-utils xsltproc unzip

2.同步代码

#新建目录
mkdir workspace
cd workspace
#链接为清华镜像,--repo-url是repo工具的地址,--no-repo-verify关闭repo工具验证
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r79 --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo --no-repo-verify
#-d用清单文件里的版本;-c当前分支;--no-tags不拉取tag
repo sync -d -c --no-tags

3.开始编译

#初始化环境
source build/envsetup.sh
#选择产品
lunch
#用16线程编译
make -j16

Android交叉编译curl

操作系统:ubuntu 14.04
一.安装需要工具

sudo apt-get install autoconf libtool libsysfs-dev

二.制作交叉编译工具链
1.下载NDK,并配置NDK环境变量为NDK的安装路径
2.根据NDK里docs文档里的standalone-toolchain.html来抽取交叉编译的环境。
3.配置SYSROOT环境变量:

SYSROOT=$NDK/platforms/android-19/arch-arm //android-19是你的android开发版本所定

4.然后运行命令:

$NDK/build/tools/make-standalone-toolchain.sh --platform=android-19 --install-dir=/tmp/my-android-toolchain

/tmp/my-android-toolchain是你交叉编译环境的复制路径。最好别放在tmp目录里,因为重启机子就立即消失了。这个新生成的文件 夹即是你的交叉编译环境
5.配置PAHT和CC环境变量:

export PATH=/tmp/my-android-toolchain/bin:$PATH
export CC=arm-linux-androideabi-gcc

三.下载curl并编译

git clone https://github.com/curl/curl.git
cd curl
mkdir build
autoreconf -i
./configure --host=arm-linux --enable-cross-compile --enable-threaded-resolver --disable-shared --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smtp --disable-gopher --disable-manual --enable-proxy --enable-ipv6 --enable-cookies --enable-symbol-hiding --disable-versioned-symbols --disable-soname-bump --disable-sspi --disable-ntlm-wb --prefix=`pwd`/build
make 
make install

搭建ldap服务器并认证登陆linux系统

1.搭建ldap服务器

在终端输入下面的命令:

sunny@server1:~$ sudo apt-get install slapd ldap-utils

填入相应的信息。如果相重新填写执行sudo dpkg-reconfigure slapd

安装管理工具:

sunny@server1:~$ sudo apt-get install phpldapadmin

修改配置文件

sunny@server1:~$ sudo vim /etc/phpldapadmin/config.php

$servers->setValue('server','base',array('dc=example,dc=com'));以及$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');位置将dc=example,dc=com修改为上面配置slapd时填入的域名。

登入管理页面http://localhost/phpldapadmin

创建People和group对象,并建立群组和用户实例。

2.ldap认证登陆

sunny@server2:~$ sudo apt-get install ldap-auth-client nscd
LDAP server Uniform Resource Identifier: ldap://LDAP-server-IP-Address
将默认的"ldapi:///"修改为"ldap://"
Distinguished name of the search base:填入上面"dc=example,dc=com"部分
LDAP version to use: 3
Make local root Database admin: No
Does the LDAP database require login? No
LDAP account for root:填入上面"cn=admin,dc=example,dc=com"部分
LDAP root account password: 你的ldap管理密码

如果想重新配置执行sunny@server2:~$ sudo dpkg-reconfigure ldap-auth-config

编辑文件nsswitch.conf

sudo vim /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap

上面三部分需要包含ldap

编辑文件

sunny@server2:~$ sudo vim /etc/pam.d/common-session

在行尾填入如下内容:

session required    pam_mkhomedir.so skel=/etc/skel umask=0022

重启服务:

sudo /etc/init.d/nscd restart

这样这台服务器就可以通过server1的ldap中配置的用户登陆了。

怎样搭建本地AOSP Gerrit服务器

怎样搭建本地AOSP Gerrit服务器

在这个教程里,我会介绍怎样搭建一个本地Android源码Gerrit服务器。

完成这个教程后,你会拥有一个完全可运行的AOSP镜像和本地Gerrit服务器。

首先我们需要一个Linux服务器。这里用Ubuntu 14.04

Gerrit 需求:

1.Java JDK > 1.7

2.Git

3.SSH server

4.DB

我选择mysql作为数据库服务,当然你也可以用其他的数据库软件。可以参考Gerrit文档

这里有一句命令可以让你得到你所需要的一切。

$ sudo apt-get install git openjdk-8-jdk openssh-server mysql-server gitweb

下载并安装Android repo

$ sudo curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo
$ sudo chmod a+x /usr/bin

现在我们需要设置一个本地Android镜像,这需要一段时间,你可以先去喝杯咖啡。

$ mkdir -p /usr/local/aosp/mirror
$ cd /usr/local/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest --mirror
$ repo sync

下载Gerrit

创建一个Gerrit用户

$ sudo adduser --system --shell /bin/bash --gecos 'Gerrit Code Review User' --group --disabled-password --home /home/gerrit2 gerrit2

Gerrit需要一个数据库来工作,这里用的是mysql。打开终端输入以下命令:

$ mysql -u root -p
CREATE USER 'gerrit2'@'localhost' IDENTIFIED BY 'secret';
CREATE DATABASE reviewdb;
ALTER DATABASE reviewdb charset=latin1;
GRANT ALL ON reviewdb.* TO 'gerrit2'@'localhost';
FLUSH PRIVILEGES;
quit

上面这个命令在mysql中创建了一个gerrit用户,一个数据库和gerrit用户需要的权限集合。

用新的系统用户登陆:

$ sudo su gerrit2

复制上面下载的文件gerrit-2.13.5.war到gerrit2的home下,然后执行下面的命令:

$ java -jar ./gerrit-2.11.war init -d review_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 2.11
***

Create ‘/home/gerrit2/review_site’ [Y/n]?

*** Git Repositories
***

Location of Git repositories [git]:

*** SQL Database
***

Database server type [h2]: MySQL

Gerrit Code Review is not shipped with MySQL Connector/J 5.1.21
** This library is required for your configuration. **
Download and install it now [Y/n]?
Downloading http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar … OK
Checksum mysql-connector-java-5.1.21.jar OK
Server hostname [localhost]:
Server port [(mysql default)]:
Database name [reviewdb]:
Database username [gerrit2]: gerrit2
gerrit’s password :
confirm password :

*** Index
***

Type [LUCENE/?]:

*** User Authentication
***

Authentication method [OPENID/?]:

*** Review Labels
***

Install Verified label [y/N]?

*** Email Delivery
***

SMTP server hostname [localhost]:
SMTP server port [(default)]:
SMTP encryption [NONE/?]:
SMTP username :

*** Container Process
***

Run as [gerrit2]:
Java runtime [/usr/lib/jvm/java-8-openjdk-amd64/jre]:
Copy gerrit-2.11.war to /home/gerrit2/review_site/bin/gerrit.war [Y/n]?
Copying gerrit-2.11.war to /home/gerrit2/review_site/bin/gerrit.war
*** SSH Daemon
***

Listen on address [*]:
Listen on port [29418]:

Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151
If available, Gerrit can take advantage of features
in the library, but will also function without it.
Download and install it now [Y/n]?
Downloading http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar … OK
Checksum bcpkix-jdk15on-151.jar OK
Generating SSH host key … rsa… dsa… done

*** HTTP Daemon
***

Behind reverse proxy [y/N]?
Use SSL (https://) [y/N]?
Listen on address [*]:
Listen on port [8080]:
Canonical URL [http://ubuntu:8080/]: http://10.0.0.9:8080

*** Plugins
***

Installing plugins.
Install plugin download-commands version v2.11 [y/N]?
Install plugin reviewnotes version v2.11 [y/N]?
Install plugin singleusergroup version v2.11 [y/N]?
Install plugin replication version v2.11 [y/N]?
Install plugin commit-message-length-validator version v2.11 [y/N]?
Initializing plugins.
No plugins found with init steps.

Initialized /home/gerrit2/review_site
Executing /home/gerrit2/review_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK
Waiting for server on ubuntu:8080 … OK
Opening http://10.0.0.9:8080/#/admin/projects/ …FAILED
Open Gerrit with a JavaScript capable browser:
http://10.0.0.9:8080/#/admin/projects/

现在Gerrit已经开始运行了。

需要注意的是,第一个登陆到gerrit的用户将会成为管理员。

Gerrit能通过多种认证方式登陆。上面选择的OpenID。

现在让我们打开浏览器并打开Gerrit网站。

注册并登陆后需要设置SSH keys,这样我们就能够在命令行下工作。

下面我们在Ubuntu系统的另一个用户下执行以下命令:

$ ssh-keygen <ENTER>
Generating public/private rsa key pair.
Enter file in which to save the key (/home/serveradmin/.ssh/id_rsa):  <ENTER>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /home/serveradmin/.ssh/id_rsa.
Your public key has been saved in /home/serveradmin/.ssh/id_rsa.pub.
The key fingerprint is:
d5:7b:51:d8:22:0e:95:63:f9:0e:a2:22:1c:97:76:40 serveradmin@ubuntu
The key's randomart image is:
+---[RSA 2048]----+
| .E ..o o.|
| . ..* o..|
| o .+.+.. |
| . + ... o... |
| . + .S. ..o. |
| o . . .. |
| . . |
| |
| |
+-----------------+

$ cat ~/.ssh/id_rsa.pub  <ENTER>
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDobCUbb8ExP9ci48ZCzCUE3P+IjoH6zrv/l88+4NOTf9FJWDAl4SHCXI+mrZoFEeZo9
uieKTuvHqUFQNpnVA9vfNY6bhaTucAAt0fX9Q1M1ZtNj2IxaQd7u9PnxjSGEig0BUtjqDEu4CMhMShXGWsGAwL7ju/qu7G7RF
iK/Wtcye6wUSjziXseCusb1DUZZ6dsOpxrPYEM3kwXpItQtAq1oEIQWsxEgj2nrOqRXm1UWdqIQU1X45XHQtg5iqi44PfLVNU
3alu453MeWn5PrpSS5dFw/7AkBW4KMPwrOvVnu8gb9xLA0TWtPf+sQ9ROEQC5SBeO+4Q9XRNf5YaswpLj 

在网站的右上角点击你的用户名然后点击Settings,在左侧的菜单中选择“SSH Public Keys”,复制上面的内容到里面,然后点Add。

下面让我们测试一下通过SSH访问Gerrit:

ssh -p 29418 admin@localhost <ENTER> <Change "admin" to your username in gerrit>

**** Welcome to Gerrit Code Review ****

Hi Administrator, you have successfully connected over SSH.

Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:

git clone ssh://ramon@10.0.0.9:29418/REPOSITORY_NAME.git
Connection to localhost closed.

出现以上信息说明登陆成功,下面创建两个group:“android-admin” and “android”

前者用来管理,包含review,merge,delete等权限,后者只有view和change-set的权限。

在网页中点击People -> Create New Group,输入名称“android-admin”。执行同样的操作创建“android”。

现在我们为AOSP代码树创建一个父项目。所有为这个项目的设置都会继承到子项目。如果跳过这步,AOSP项目会继承“All-Projects”项目,而这个项目太通用了。

在网站中点击Project -> Create New Project,填入以下内容:

Project Name: Android
Rights Inherit From: All-Projects

勾选 “Only Serve As Parent For Other Projects”,然后点击“Create Project”按钮。

项目已经创建完,下面来为这个项目设置权限控制:

点击Projects -> List,然后选择“Android”项目,点击“Access”然后点击“Edit”,修改成如下图。图中还包含了其他的群组,可自行设置。

Gerrit权限配置

现在我们可以把所有的Android项目推送到Gerrit了。

第一条命令会在Gerrit上创建所有的Android项目;第二条命令会将刚刚创建的项目的父项目修改为“Android”;第三条命令会将代码推送到Gerrit,时间会比较长。

进入下载Android镜像的目录执行以下命令:

$ repo forall -c 'echo $REPO_PATH; ssh -p 29418 admin@localhost gerrit create-project --name android/$REPO_PATH --owner android;'

accessories/manifest
device/asus/deb
device/asus/flo
device/asus/flo-kernel
device/asus/fugu
device/asus/fugu-kernel
…

$ repo forall -c 'echo $REPO_PATH; ssh -p 29418 admin@localhost gerrit set-project-parent --parent Android android/$REPO_PATH;'

accessories/manifest
device/asus/deb
device/asus/flo
device/asus/flo-kernel
…

$ repo forall -c 'echo $REPO_PATH; git push ssh://ramon@localhost:29418/android/$REPO_PATH +refs/heads/* +refs/tags/*;'

大功告成!

创建Gerrit服务自启:

$ sudo echo "GERRIT_SITE=/opt/gerrit-review" >> /etc/default/gerritcodereview
$ sudo ln -snf /opt/gerrit-review/bin/gerrit.sh /etc/init.d/gerrit
$ sudo update-rc.d gerrit defaults

下面贴一个gerrit配置文件(postgre数据库,ldap认证,提交信息增加jira链接)

[gerrit]
    basePath = git
    canonicalWebUrl = http://localhost:8080/
[database]
    type = postgresql
    hostname = localhost
    database = reviewdb
    username = gerrit2
[index]
    type = LUCENE
[auth]
    type = LDAP
[ldap]
    server = ldap://localhost:389
    username = cn=admin,dc=darkerthanblack,dc=org
    accountBase = ou=People,dc=darkerthanblack,dc=org
    groupBase = ou=group,dc=darkerthanblack,dc=org
[receive]
    enableSignedPush = false
[sendemail]
    smtpServer = smtp.exmail.qq.com
    smtpServerPort = 465
    smtpEncryption = SSL
    smtpUser = example@example.com
        smtpPass = your_password
        from = example@example.com
[container]
    user = gerrit2
    javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[sshd]
    listenAddress = *:29418
    maxConnectionsPerUser = 0
[httpd]
    listenUrl = http://*:8080/
[cache]
    directory = cache
[gitweb]
    cgi = /usr/lib/cgi-bin/gitweb.cgi
[commentlink "jira"]
    match = ([A-Z]+-[0-9]+)
    link = http://localhost:8081/browse/$1

参考:
http://openwares.net/linux/gerrit2_setup.html
https://nativeguru.wordpress.com/2015/08/18/how-to-set-local-aosp-gerrit-server-part-1

KVM

一、安装kvm

  1. $ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
  2. $ sudo adduser `id -un` libvirtd
  3. 验证安装:
    $ virsh -c qemu:///system list
    没有错误信息就表明安装成功!
    确认如下两个文件的权限正确:
    $ sudo ls -la /var/run/libvirt/libvirt-sock
    srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock
    $ ls -l /dev/kvm
    crw-rw----+ 1 root kvm 10, 232 Jul 8 22:04 /dev/kvm
  4. 安装完毕后,会自动生成虚拟网卡 virbr0,可以通过 ifconfig 查看确认一下
  5. 创建网卡桥接
    $ sudo vi /etc/network/interfaces
    增加如下内容:

    auto br0
    iface br0 inet static
    address 192.168.0.222
    netmask 255.255.255.0
    gateway 192.168.0.1
    bridge_ports eth0

    保存,重启网卡设置,ifconfig 再查看网卡的设置,这个时候 eth0 已经没有具体的IP地址,IP地址出在了 br0 的虚拟网上面。
    安装后,默认的目录为:/etc/libvirt/qemu/

二、kvm 虚拟机的日常管理


virsh list --all > 查看虚拟机状态
virsh start [name] > 开机
virsh shutdown [name] > 关机
virsh destroy [name] > 强制关闭电源
virsh reboot[name] > 关机
virsh suspend [name] > 挂起服务器
virsh resume [name] > 恢复服务器
virsh autostart [name] > 配置开机自启动虚拟机 (/etc/libvirt/qemu/autostart/)
virsh undefine [name] > 删除虚拟机 (只删除配置文件,并不删除虚拟磁盘文件)
virsh create /etc/libvirt/qemu/[name].xml > 通过配置文件启动虚拟机
virsh dumpxml [name] > /etc/libvirt/qemu/[name].xml > 导出KVM虚拟机配置文件(可通过这种方式进行备份)
virsh edit [name] > 编辑虚拟机配置文件(/etc/libvirt/qemu/[name].xml,不建议直接通过vi编辑)
virsh --version > 查看虚拟工具版本
virt-install --version > 查看虚拟工具版本
qemu-kvm -version > 查看虚拟工具版本

注:virsh 命令丰富,可以执行各种维护任务。

三、安装 Win2003SP2 虚拟机

  1. 上传系统 iso 文件到 /file/tools/win/win2003/WIN_2003_SP2.iso
  2. 开始安装

    $ virt-install --name=win2003sp2 \
    --hvm \
    --ram 1024 \
    --vcpus=1 \
    --os-type=windows \
    --os-variant=win2k3 \
    --arch=x86_64 \
    --disk path=/file/kvm/win2003sp2/win2003sp2.img,size=20 \
    --network bridge=br0 \
    --accelerate \
    --graphics vnc,listen=0.0.0.0,port=5911 \
    --cdrom /file/tools/win/win2003/WIN_2003_SP2.iso \
    --boot cdrom

    参数说明:

    --name 指定虚拟机名称
    --hvm 使用全虚拟化(与--paravirt相对)
    --ram 分配内存大小,单位为 MB
    --vcpus 分配CPU核心数,最大与实体机CPU核心数相同
    --disk 指定虚拟机使用的磁盘,path 指定路径,size 指定大小,单位为G
    --network 网络设置,使用默认配置时可设为 "--network network:default"
    --accelerate 加速
    --graphics vnc,listen=0.0.0.0,port=5911 指定VNC监控端口、绑定IP,默认端口为5900,端口不能重复;IP 默认绑定127.0.0.1,这里改为 0.0.0.0
    --cdrom 指定安装镜像iso设置光驱获取虚拟光驱文件的路径
    --os-type=windows
    --os-variant=win2k3
    --arch=x86_64
    --boot cdrom 指定从 cdrom 启动,从硬盘启动时设为 hd
    --autostart 指定主机启动时自动启动此虚拟机

  3. 将虚拟机的启动方式改为从磁盘启动
    $ virsh edit win2003sp3
    <boot dev='cdrom'/>改为 <boot dev='hd'/>
    然后重新启动虚拟机:
    $virsh destroy win2003sp3
    $virsh start win2003sp3
    之后就可以重新使用 vnc 连接,继续安装过程。

  4. 安装完毕后按需要设置IP地址、远程连接等即可

四、KVM 克隆

复制已经安装好的虚拟机为另一个全新的虚拟机。如要将上面的 win2003sp2 复制为 win2003sp2-2:
1. 关闭 win2003sp2
$virsh shutdown win2003sp2
2. 克隆 win2003sp2-2
$virt-clone -o win2003sp2 -n win2003sp2-2 -f /file/kvm/win2003sp2/win2003sp2-2.img
如果虚拟机文件比较大,复制的时间就会比较长。
3. 修改 win2003sp2-2.xml 文件
修改 vnc 端口避免与 win2003sp2 重复。
$virsh edit win2003sp2-2
<graphics type='vnc' port='5912' autoport='no' listen='0.0.0.0'>
4. 启动 win2003sp2-2
$virsh start win2003sp2-2
最后利用 vnc 登录到 win2003sp2-2 之后,修改网络设置,避免 IP 冲突。

五、KVM 快照

对虚拟机做快照,防止损坏了可以正常恢复。kvm 快照分两种:
第1种:lvm 快照,如果分区是 lvm,可以利用 lvm 进行 kvm 的快照备份
第2种:由于 raw 格式不支持镜像,所以需要将格式转换为 qcow2 才可以创建快照。
第2种具体操作如下:
kvm 虚拟机默认使用 raw 格式的镜像格式,性能最好,速度最快,它的缺点就是不支持一些新的功能,如镜像、zlib 磁盘压缩、AES加密等。
要使用镜像功能,磁盘格式必须为 qcow2。
下面开始 kvm 虚拟机快照备份的过程:
1. 查看磁盘格式
$qemu-img info win2003sp2.img
2. 关闭 win2003sp2
$virsh shutdown win2003sp2
3. 转换磁盘格式
$qemu-img convert -f raw -O qcow2 win2003sp2.img win2003sp2.img.qcow2
-f 源镜像的格式
-O 目标镜像的格式
4. 修改虚拟机配置文件,指向新的磁盘格式文件
$virsh edit win2003sp2
<devices>
...
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/file/kvm/win2003sp2/win2003sp2.img.qcow2'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
...
</devices>

注:我发现转换后镜像文件占用的空间大大减少了,而且日后为动态自动增加,而不是固定占用开始设置时占用的大小。
5. 创建快照
$virsh snapshot-create-as win2003sp2 clean
6. 查看虚拟机镜像快照的版本
$virsh snapshot-list win2003sp2
7. 看当前最新的快照版本
$virsh snapshot-current win2003sp2
8. 恢复虚拟机快照
恢复虚拟机快照前必须先关闭虚拟机!
$virsh snapshot-revert win2003sp2 clean
9. 删除虚拟机快照
$virsh snapshot-delete win2003sp2 clean

ubuntu12.04安装支持SSL的Apache

安装APACHE

  1. sudo apt-get install apache2 apache2-doc apache2-utils

创建一个名为ssl的目录

  1. sudo mkdir /etc/apache2/ssl

创建一个自签名凭证

  1. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/ssl.key -out /etc/apache2/ssl/ssl.crt

拿到startssl上去验证,或者采用startssl上生成的。
开启APACHE SSL模块

  1. sudo a2enmod ssl

编辑 /etc/apache2/sites-enabled/default-ssl.conf 文件


DocumentRoot /var/www/

Options FollowSymLinks
AllowOverride None

Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

ErrorLog /var/log/apache2/error.log
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/ssl.key

重启APACHE

  1. sudo service apache2 restart

 

 
开启http自动跳转https
开启Rewrite模块

  1. sudo a2enmod rewrite

编辑.htaccess文件
在网站根目录创建.htaccess文件
内容如下

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

重启apache

  1. sudo service apache2 restart

去掉每次启动时要输入证书私钥的 pass phrase

  1. #cp ssl.key  ssl.key.secure
  2. #/usr/bin/openssl rsa -in ssl.key.secure  -out ssl.key

Linux部署PPTP以及L2TP over IPsec

操作系统 ubuntu 12.04 内核3.16.5-x86_64
Openswan U2.6.37
xl2tpd version: xl2tpd-1.3.1

PPTP部署

1.安装pptpd

  1. apt-get install pptpd

2.配置文件

  1. vim /etc/ppp/options.pptpd

填写如下内容


name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4

说明:


name pptpd : pptpd server 的名称。
refuse-pap : 拒绝 pap 身份验证模式。
refuse-chap : 拒绝 chap 身份验证模式。
refuse-mschap : 拒绝 mschap 身份验证模式。
require-mschap-v2 : 在端点进行连接握手时需要使用微软的 mschap-v2 进行自身验证。
require-mppe-128 : MPPE 模块使用 128 位加密。
ms-dns 8.8.8.8
ms-dns 8.8.4.4 : ppp 为 Windows 客户端提供 DNS 服务器 IP 地址,第一个 ms-dns 为 DNS Master,第二个为 DNS Slave。
proxyarp : 建立 ARP 代理键值。
debug : 开启调试模式,相关信息同样记录在 /var/logs/message 中。
lock : 锁定客户端 PTY 设备文件。
nobsdcomp : 禁用 BSD 压缩模式。
novj
novjccomp : 禁用 Van Jacobson 压缩模式。
nologfd : 禁止将错误信息记录到标准错误输出设备(stderr)。
  1. vim /etc/ppp/chap-secrets

输入以下内容

myusername pptpd mypassword *
  1. vim /etc/pptpd.conf

填入以下内容


option /etc/ppp/options.pptpd
logwtmp
localip 10.82.18.1
remoteip 10.82.18.2-254
  1. sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
  2. sysctl -p

IPSec+L2TP部署

1.安装openswan和xl2tpd

  1. apt-get install openswan xl2tpd

安装过程中选择使用X.509,创建,自签名
2.配置文件

  1. vim /etc/ipsec.conf

填入以下内容


version 2.0  
config setup  
    nat_traversal=yes  
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12  
    oe=off  
    protostack=netkey  
conn L2TP-PSK-NAT  
    dpddelay=40  
    dpdtimeout=130  
    dpdaction=clear  
    rightsubnet=vhost:%priv  
    also=L2TP-PSK-noNAT  
conn L2TP-PSK-noNAT  
    authby=secret  
    pfs=no  
    auto=add  
    keyingtries=3  
    rekey=no  
    ikelifetime=8h  
    keylife=1h  
    type=transport  
    left=106.186.178.35  
    leftprotoport=17/1701  
    right=%any  
    rightprotoport=17/%any 
  1. vim /etc/ipsec.secrets
YOUR.IP %any: PSK "password"
  1. vim /etc/xl2tpd/xl2tpd.conf

[global]  
ipsec saref = yes  
[lns default]  
ip range = 10.1.2.2-10.1.2.255  
local ip = 10.1.2.1   
refuse chap = yes  
refuse pap = yes  
require authentication = yes 
name xl2tpd
ppp debug = yes  
pppoptfile = /etc/ppp/options.xl2tpd  
length bit = yes
  1. vim /etc/ppp/options.xl2tpd

require-mschap-v2  
ms-dns 8.8.8.8  
asyncmap 0  
auth  
crtscts  
lock  
hide-password  
modem  
debug  
name xl2tpd  
proxyarp  
lcp-echo-interval 30  
lcp-echo-failure 4  
  1. vim /etc/ppp/chap-secrets

按说明填写,server写xl2tpd
  1. vim /etc/rc.local

iptables --table nat --append POSTROUTING --jump MASQUERADE  
echo 1 > /proc/sys/net/ipv4/ip_forward  
for each in /proc/sys/net/ipv4/conf/*  
do  
echo 0 > $each/accept_redirects  
echo 0 > $each/send_redirects  
done  
exit 0
  1. service ipsec restart  
  2. service xl2tpd restart

Ubuntu下安装LAMP及phpmyadmin

关于Ubuntu下的LAMP配置,已经成为了某一些人的心病,加上phpmyadmin的配置,更是使他们不知所以。现在我就把我在LINUX 下的关于配置LAMP 及phpmyadmin 的一些经验,分享一下。希望对你有些帮助。

我们首先要安装LAMP 就是Apache,PHP5,Mysql5.

打开终端,输入命令行。

1.安装 Apache

1.打开终端

2. 输入以下命令

sudo apt-get install apache2

3. 如果没有sudo 权限,需要输入密码。

2.测试 Apache

为了确定安装是否成功,我们来测试一下。

1. 打开浏览器,输入以下网址

http://localhost/

如果成功,你会看到以下内容 “It works!” , 祝贺你,第一步,你算是跨出去了。

3.安装 PHP5

Step 1. 打开终端 (ctrl+alt+T).

Step 2. 输入以下命令行:

sudo apt-get install php5 libapache2-mod-php5

Step 3.为了使PHP和Apache能一起工作,我们需要配置一下PHP并且测试一下。

sudo /etc/init.d/apache2 restart

4.测试 PHP

Step 1.我们先建一个PHP 测试文件(我们叫它phptest.php),输入以下内容 :

sudo gedit /var/www/testphp.php

Step 2.这时我们会打开一个文本编辑器,在里面输入以下内容.

Step 3.保存退出。

Step 4. 现在打开浏览器,查看一下我们刚刚建立的内容。输入以下网址。

http://localhost/testphp.php

如果显示出PHP的信息内容页面,说明你又成功了一小步。
5.安装 MySQL

下面我们来安装Mysql5 (这是最后一步,也是麻烦比较多的一步,安装的时候注意。)

Step 1. 再一次地打开终端,输入以下内容。

sudo apt-get install mysql-server

Step 2.在安装的时候,如果要求你输入Mysql 密码,则输入密码。如果没有要求,则执行下一步。在终端中输入下面命令。

mysql -u root

后来,你还要输入以下内容;

mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘yourpassword’);

以上的’root’是你的Mysql 用户名,’yourpassword’是你的新密码。
配置

1.配置php5

sudo gedit /etc/php5/apache2/php.ini

允许 mysql 和 gd 模块,检查文件最后是否包含下面的代码,如果没有添加上。(默认是在配置文件最后有添加的,检查一下以防万一)
extension=mysql.so
extension=gd.so

2.配置apache2

sudo gedit /etc/apache2/conf.d/charset
这个是网站编码配置,里面内容很少,打开看就知道了,我这里将最后行的 #AddDefaultCharset UTF-8 前面的#去掉,使用UTF-8编码,当然也可以把 UTF-8改成别的编码.

sudo gedit /etc/apache2/sites-available/default

更改apache2运行路径,更改DocumentRoot 指向的路径(绝对路径),更改< Directory > 里的路径,和DocumentRoot保持一致

3.配置 mysql,让它支持其它客户端访问,如果你不需要就不用修改。
sudo gedit /etc/mysql/my.cnf

查找文件
skip-networking
修改为
#skip-networking
保存并关闭文件。

重新启动 mysql
sudo /etc/init.d/mysql restart

Step 3.下面我们将去处理更为棘手的phpmyadmin这里经常出现的问题就是明明安装了phpmyadmin但却在输入http://localhost/phpmyadmin的时候,没有出现管理界面,反而出现没有找到的页面。不急,我们先安装再了phpmyadmin然后再去解决。 输入以下命令:

sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

这里的phpmyadmin是与我们之前装的php5 是相配合的,如果你装的PHP 和phpmyadmin不相配,它们不会工作。

Step 4.现在我们去解决phpmyadmin“不工作”的问题,当我们安装了phpmyadmin 后,不要以为一切就绪了。其实我们还有一项工作要去完成,就是去配置phpmyadmin和apache2。同样的终端,输入:

cp /etc/phpmyadmin/apache.conf /etc/apache2/sites-available/phpmyadmin

这样我们就把phpmyadmin中的apache.conf(apache配置文件)复制到apache2/sites-available下的phpmyadmin文件下。

Step 5.接着输入,进入sites-enabled文件夹下:

cd /etc/apache2/sites-enabled/

Step 6.进入之后,我们要建立一个通往配置文件的链接以便能利用它。输入:

sudo ln -s ../sites-available/phpmyadmin

Step 7.重启apache2

sudo /etc/init.d/apache2 restart

好了。打开http://localhost/phpmyadmin 去体验一下吧。

到此为止,我们的LAMP 配置就完全结束了,希望对你有所帮助。