顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - zarr12steven

頁: [1] 2 3
1
這邊有個小問題要請教一下,各位大大,centos7裡的firewalld都是怎麼處理?

我先說一下我自已,我是把原有的firewalld給disalbe,然後改用iptables
而我會這麼做的原因,其實很簡單,就是對iptables較不陌生,所以就這樣改了

2
更新一下,遇到的問題


錯誤訊息

Exception message: (2002, \"Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)\")"}


解法

代碼: [選擇]
login_unix_socket="你設定檔裡指定socket的位置


OS: 明明就有看官網文件,怎麼就一直就沒看到,這次真的要謝謝我的好同事XDDD

3
Ansible 使用 mysql_db & mysql_user 模組
這次剛好有機會使用ansible的資料庫模組,所以就紀錄一下筆記

首先在官網 http://docs.ansible.com/ansible,點選 Module Index 這裡就有提供很多模組可以使用,這次我使用的是 Database Modules,點進來後就找 mysql_db & mysql_user,這是我這次主要用的二個模組。

第一次建立資料庫無非就是下列四件事:

  • 修改root密碼
  • 新建資料庫
  • 新建使用者
  • 給使用者特定的權限

先介紹一下我使用的環境

SYSTEM VERSION
代碼: [選擇]
CentOS Linux release 7.2.1511 (Core)

ANSIBLE VERSION
代碼: [選擇]
ansible 2.1.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides


STEPS TO REPRODUCE

代碼: [選擇]
---
- name: Setup | Percona XtraDB Cluster
  hosts: db
  tasks:
    - name: Setup | Percona yum Repository
      yum: name=http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm state=present

    - name: Setup | Install EPEL Repository
      yum: name=epel-release update_cache=yes state=present

    - name: Setup | Install Percona-XtraDB-Cluster-56 Package
      yum: name=Percona-XtraDB-Cluster-56 update_cache=yes state=present

    - name: Setup | Install Requirement Packages
      yum: name={{ item }} state=present  update_cache=yes
        # 裝這二個套件主要是要讓控制端主機要有MySQL的libary,這樣才能與遠端的主機裡的資料庫做溝通,如果沒有的話就會出現 "the python mysqldb module is required"
     with_items:
        - mysql-devel    # 本機端的libary
        - MySQL-python   # 給python用的libary

    - name: Setup | Create Mysql Data Directories
      file: path={{ item }} state=directory recurse=yes owner=mysql group=mysql mode=0755
      with_items:
        - /var/log/mysql

    - name: Setup | Mysql Configuration
      # 使用 Jinja2 的範本,來做設定檔的維護
      template: src=./templates/my_cnf_test.j2 dest=/etc/my.cnf
      # 這個變數會套進剛剛設定的my_cnf_test.j2
      vars:
        - gcomm_list: 192.168.1.100
      # notify 是用來觸發事件,通常會跟handlers一起使用,而且只會跑一次,在此劇本目前只會觸發二件事,一個啟動mysql service,另一個是更新root密碼
      notify:
        - restart_mysql
        - Update MySQL root password
        - Create Database

  # handlers 事件處理器,也就是被notify所調用
  handlers:
    - name: restart_mysql
      service: name=mysql@bootstrap.service  state=restarted

    - name: Update MySQL root password
      run_once: true
      mysql_user:
      # 有驗証的登入使用者
        login_user=root
      # 登入者的密碼
        login_password="\n"
      # 建立使用者的名字或是已存在的使用者
        name=root
      # 設定密碼
        password='123456789'
      # 設定權限; 語法是: 資料庫.資料表:權限1,權限2
      # 小建議,如果是設定權限時,最好是用雙引號包起來,避免會有語法上的錯誤
        priv=*.*:ALL,GRANT
      # host預設就是localhost,如果有要連別的主機就可以用這選項
        host={{ item }}
      # present=安裝 absent=移除
        state=present
      # 檢查MySQL允許用root/NOPASSWORD登入之前嘗試提供憑証(這個不設也可以用)
        check_implicit_admin=True
      with_items:
        - localhost

    - name: Setup | Create MySQL Database
      mysql_db:
      # 有驗証的登入使用者
        login_user=root
      # 使用者的登入密碼
        login_password='123456789'
      # 建立資料庫的名稱
        name=Apple
      # present=安裝 absent=移除
        state=present

templates/my_cnf_test.j2

代碼: [選擇]
[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib64/libgalera_smm.so
# Cluster connection URL
wsrep_cluster_address=gcomm://{{ gcomm_list }}
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# This changes how |InnoDB| autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2


ACTUAL RESULTS

代碼: [選擇]
PLAY [Setup | Percona XtraDB Cluster] **************************************************

TASK [setup] *******************************************************************
ok: [db]

TASK [Setup | Percona yum Repository] ******************************************
changed: [db]

TASK [Setup | Install EPEL Repository] *****************************************

changed: [db]

TASK [Setup | Install Percona-XtraDB-Cluster-56 Package] ***********************
changed: [db]

TASK [Setup | Install Requirement Packages] ************************************
changed: [db] => (item=[u'mysql-devel', u'MySQL-python'])

TASK [Setup | Create Mysql Data Directories] ***********************************
changed: [db] => (item=/var/log/mysql)

TASK [Setup | Mysql Configuration] *********************************************
changed: [db]

RUNNING HANDLER [restart_mysql] ************************************************
changed: [db]

RUNNING HANDLER [Update MySQL root password] ***********************************
changed: [db] => (item=localhost)

RUNNING HANDLER [Create MySQL Database] ****************************************
changed: [db]

PLAY RECAP *********************************************************************
db                         : ok=10   changed=9    unreachable=0    failed=0


4
DevOps 討論版 / [docker] DCOS 筆記
« 於: 2016-05-05 16:44 »
CentOS install DC/OS

代碼: [選擇]
$ sudo yum update -y && sudo yum upgrade -y
Please check your kernel version

代碼: [選擇]
$ uname -r
3.10.0-327.10.1.el7.x86_64

Docker requirements

Docker 1.7 or greater must be installed on all bootstrap and cluster nodes.

Docker recommendations

  • Docker 1.9 or greater is recommended for stability reasons.
  • Do not use Docker devicemapper storage driver in loop-lvm mode.
  • Prefer OverlayFS or devicemapper in direct-lvm mode when choosing a production storage driver.
  • Manage Docker on CentOS with systemd.
  • Run Docker commands as the root user (with sudo) or as a user in the docker user group.

Setting Overlay script for CentOS7

代碼: [選擇]
#!/bin/bash

#####
# Basic tool
#####

yum -y install curl git tig tree vim wget
yum -y groupinstall "Development Tools"

#####
# Docker Repo
#####

DOCKER_REPO="/etc/yum.repos.d/docker.repo"

if [ -f ${DOCKER_REPO} ]; then
    echo -e "\033[0;33;40mDocker Repo exist\033[0m"
    echo -e "\033[0;36;40mInstall Docker Engine\033[0m"
    yum install -y docker-engine
    echo -e "\033[0;32;40mdone\033[0m"
else
    echo -e "\033[0;36;40mSetting Docker Repo\033[0m"
    tee ${DOCKER_REPO} <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
    echo -e "\033[0;32;40mdone\033[0m"

    echo -e "\033[0;36;40mInstall Docker Engine\033[0m"
    yum install -y docker-engine
    echo -e "\033[0;32;40mdone\033[0m"
fi

sleep 2
#####
# Enable Overlay module
#####

lsmod | grep overlay >> /dev/null
check_overlay=$?

if [ ${check_overlay} = 0 ]; then
    echo -e "\033[0;33;40mAlready Enabled overlay module\033[0m"
else
    echo -e "\033[0;36;40mEnable overlay module\033[0m"
    modprobe overlay
    echo -e "\033[0;32;40mdone\033[0m"
fi

sleep 2
#####
# Setting Disk and mount
####

HDD_DEVICE="`cat /var/log/messages | grep 'unknown partition table' | awk '{print $6}' | cut -d: -f1 | head -n 1`"
OVERLAY_DIR="/var/lib/docker/overlay"

if [ -b /dev/${HDD_DEVICE}1 ]; then
    echo -e "\033[0;33;40m${HDD_DEVICE}1 exist\033[0m"
else
    echo -e "\033[0;36;40mFormate Disk\033[0m"
    echo "n
p
1


w
"|fdisk /dev/${HDD_DEVICE}; mkfs.ext4 /dev/${HDD_DEVICE}1
    echo -e "\033[0;32;40mdone\033[0m"
fi

sleep 2

if [ -d ${OVERLAY_DIR} ]; then
    echo -e "\033[0;33;40m${OVERLAY_DIR} exist\033[0m"
else
    echo -e "\033[0;36;40mCreating ${OVERLAY_DIR} directoy\033[0m"
    mkdir -p ${OVERLAY_DIR}
    echo -e "\033[0;32;40mdone\033[0m"
fi

sleep 2

cat /etc/fstab | grep 'overlay' >> /dev/null
check_uuid=$?
HDD_UUID_1="`blkid  /dev/${HDD_DEVICE}1 | awk '{print $2}' | sed 's/\"//g'`"

if [ ${check_uuid} = 0 ]; then
    echo -e "\033[0;33;40mfstab OK\033[0m"
else
    echo -e "\033[0;36;40mSetting fstab\033[0m"
    echo -n "${HDD_UUID_1}    ${OVERLAY_DIR}  ext4 defaults 0 2" >> /etc/fstab
    mount -a
    echo -e "\033[0;32;40mdone\033[0m"
fi

sleep 2
#####
# Setting Docker Engine
####

DOCKER_SERVICE="/usr/lib/systemd/system/docker.service"

grep '\-\-storage-driver=overlay' ${DOCKER_SERVICE} >> /dev/null
check_storage_driver=$?

if [ ${check_storage_driver} = 0 -a -f ${DOCKER_SERVICE} ]; then
  echo -e "\033[0;33;40mDocker Storage nothing to do\033[0m"
else
  echo -e "\033[0;36;40mSetting docker storage\033[0m"
  sed 12d -i ${DOCKER_SERVICE}
  sed "11 aExecStart=/usr/bin/docker daemon --storage-driver=overlay -H fd://" -i ${DOCKER_SERVICE} >> /dev/null
  echo -e "\033[0;32;40mdone\033[0m"
fi

#####
# Enable Docker
#####

systemctl daemon-reload
systemctl start docker

On CentOS 7, firewalld must be stopped and disabled.

代碼: [選擇]
$ sudo systemctl stop firewalld && sudo systemctl disable firewalld
Data compression (advanced installer),to install these utilities on CentOS7 and RHEL7:

代碼: [選擇]
$ sudo yum install -y tar xz unzip curl ipset
Cluster permissions (advanced installer)

On each of your cluster nodes, use the following command to:

  • Disable SELinux or set it to permissive mode.
  • Add nogroup to each of your Mesos masters and agents.
  • Disable IPV6.

代碼: [選擇]
$ sudo sed -i s/SELINUX=enforcing/SELINUX=permissive/g /etc/selinux/config &&
  sudo groupadd nogroup &&
  sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 &&
  sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 &&
  sudo reboot

Download the DC/OS installer

代碼: [選擇]
curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh
Create a directory named genconf on your bootstrap each node.

代碼: [選擇]
sudo mkdir -p genconf && cd genconf

Create a ip-detect script

代碼: [選擇]
#!/usr/bin/env bash
set -o nounset -o errexit
export PATH=/usr/sbin:/usr/bin:$PATH
echo $(ip addr show eth0 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)

Create config.yaml. for exammple

代碼: [選擇]
---
agent_list:
- <agent_ip>
- <agent_ip>
- <agent_ip>
bootstrap_url: file:///opt/dcos_install_tmp
cluster_name: DCOS
exhibitor_storage_backend: static
ip_detect_filename: /genconf/ip-detect
master_discovery: static
master_list:
- <master_ip>
- <master_ip>
- <master_ip>
process_timeout: 10000
resolvers:
- 8.8.8.8
ssh_port: 22
ssh_user: <user_name>

Copy your private SSH key to genconf/ssh_key

代碼: [選擇]
$ cp <path-to-key> genconf/ssh_key && chmod 0600 genconf/ssh_key

Now you genconf will be like this and copy to each node

代碼: [選擇]
genconf/
├── config.yaml
├── ip-detect
└── ssh_key
$ scp -rp genconf username@<ip>:

Check help

代碼: [選擇]
$ sudo bash dcos_generate_config.sh --help
Running mesosphere/dcos-genconf docker with BUILD_DIR set to /home/centos/genconf
usage:
Install DC/OS

dcos_installer [-h] [-f LOG_FILE] [--hash-password HASH_PASSWORD] [-v]
[--web | --genconf | --preflight | --deploy | --postflight | --uninstall | --validate-config | --test]

Environment Settings:

  PORT                  Set the :port to run the web UI
  CHANNEL_NAME          ADVANCED - Set build channel name
  BOOTSTRAP_ID          ADVANCED - Set bootstrap ID for build

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Verbose log output (DEBUG).
  --offline             Do not install preflight prerequisites on CentOS7,
                        RHEL7 in web mode
  --web                 Run the web interface.
  --genconf             Execute the configuration generation (genconf).
  --preflight           Execute the preflight checks on a series of nodes.
  --install-prereqs     Install preflight prerequisites. Works only on CentOS7
                        and RHEL7.
  --deploy              Execute a deploy.
  --postflight          Execute postflight checks on a series of nodes.
  --uninstall           Execute uninstall on target hosts.
  --validate-config     Validate the configuration in config.yaml
  --test                Performs tests on the dcos_installer application

Run this command for each master and node.

代碼: [選擇]
sudo bash dcos_generate_config.sh --install-prereqs
Run docker nginx for download install dcos_install.sh on master, and other node just download dcos_install.sh

代碼: [選擇]
sudo bash dcos_generate_config.sh
sudo docker run -d -p <port>:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx

Create /tmp/dcos directory and download dcos_install.sh

代碼: [選擇]
mkdir -p /tmp/dcos && cd /tmp/dcos
curl -O http://<ip>:<port>/dcos_install.sh
sudo bash dcos_install.sh <role>
role must be master or slave

Now You can check

ZooKeeper http://<IP>:8181/exhibitor/v1/ui/index.html
Mesos http://<ip>:5050
DC/OS http://<ip>

Reference:
https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/
https://dcos.io/

I have two HDD, so I formate secondary HDD for docker storage.

5
我是用docker/ucp安裝的,只要輸入password及controller ip即可,它會自動幫你下其他docker image,
也會自動幫你起container.

假如想體驗docker ucp的,可以用這個方法!

但,我的疑問又來了!!
**它的config都存那兒?**
因為docker hub上的說明,只提到要掛一個data volume供docker sock用。

回duncan大:
config通常我都是copy進去container的 或是你也可以用volume的方式掛進去也行,如果想要方便修改管理的話,建議用volume的方式。

6
UCP scale功能說明

代碼: [選擇]
docker-compose scale worker=5
就可以在dashborad上看到長了5台機器

如果想要把剛剛開的5台機器給關掉

代碼: [選擇]
docker-compose scale worker=0
我有試著在UCP WEB上選scale的功能,都死機給我看,暈…這還要查一下原因

7
補充一下,如果想要看到application的話,目前必須使用先寫好一個docker-compose.yml後,再下docker-compose up -d  ,然後接著就會出現在你的UCP上的application了。

至於UCP的scaling功能,尚在研究中。

docker-compose的安裝可以參考:https://github.com/docker/compose/releases

BTW  參考來源:https://github.com/docker/ucp_lab

@netman 您過獎了!!!!

8
Step 1: Verify you have the prerequisites

  • RHEL 7.0, 7.1
  • Ubuntu 14.04 LTS
  • CentOS 7.1

Setp 2: Install UCP

代碼: [選擇]
curl -fsSL https://get.docker.com/ | sh這個會去幫你自動裝docker engine

代碼: [選擇]
docker -v請務必確認要Docker version 1.10 or later,要不然會無法安裝UCP的。

代碼: [選擇]
sudo usermod -aG docker $USER把目前的使用者加入docker 群組裡面,這樣才能使用dokcer的指令,記得要重登一次。

代碼: [選擇]
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --name ucp docker/ucp install -i這才是真正去裝UCP的指令,-i 是指互動模式

reference: https://github.com/docker/docker/releases

Step 3: Open browser

Login as "admin"/(your admin password) to UCP at https://IP:443

最後提一下,這個記得要去註冊一下https://hub.docker.com/enterprise/trial/,這樣就可以有30天試用了。

9
DevOps 討論版 / [docker] 自動建立gitbook pdf
« 於: 2016-02-05 13:56 »
Goal:

主要是要拿來讓大家有個共同寫文件的地方,並且在每次git push後,自動產生pdf的文件。

Step:

先準備好Dockerfile,然後直接執行docker-compose -f docker-compose.yml build,跑完之後再執行docker-compose -f docker-compose.yml up -d,這樣服務就都會起來,gitbook 開 80port,gitlab 開 10080 & 10022 port。

先至gitlab建立一個專案,至少先推一個README.md檔案,把這個專案clone下來,接下來就到project → 目前的專案 → Settings → Runners,此時會看到urltoken,需要把它記下來,再來就是將gitlab-runner 註冊在 gitlab-ci 上,

註冊方法如下:

代碼: [選擇]
docker exec -it NAME gitlab-runner register

請依照畫面跳出的訊息,做註冊,註冊完後就會看到有一個runner在剛剛runner的頁面,記得剛剛註冊的tag需要與.gitlab-ci.yml裡面的tag命名要一樣的,否則會執行失敗

.gitlab-ci.yml 這個檔案必須要存在你的專案的根目錄下,這個檔案主要用於決定 Gitlab CI 要如何對專案 build、test、deploy…等等。詳細的說明可以參考官方文件

補充:

  • gitbook目錄下,一定要有二個檔案,一個是README.md,另一個是SUMMARY.md,而SUMMARY.md這個是來管理你的book的結構,如果沒有這二個檔案請下gitbook init就會產生出來



範例如下:

代碼: [選擇]
# Summary

This is the summary of my book.

* [section 1](section1/README.md)
    * [example 1](section1/example1.md)
    * [example 2](section1/example2.md)
* [section 2](section2/README.md)
    * [example 1](section2/example1.md)
  • .gitlab-ci.yml裡面的image參數,它會去抓Docker registry,但如果內部有private Docker registry,寫法則會如下:

代碼: [選擇]
image: my.registry.tld:5000/namepace/image:tag

In the example above, GitLab Runner will look at my.registry.tld:5000 for the image namespace/image:tag.


非常感謝shuo & sameersbn 的資訊,上述所說的dokcerfile 都是撿現成的來用,所以可以直接去抓二位大神的dockerfile即可。

最後再廢話一句,這個模式後來是把gitbook 產出靜態檔出來後,丟給nginx去show畫面。

Reference:

https://github.com/shuo/docker-gitbook-builder
https://github.com/sameersbn/docker-gitlab
https://github.com/GitbookIO/gitbook
https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/configuration/advanced-configuration.md
http://doc.gitlab.com/ce/ci/docker/using_docker_images.html#define-an-image-from-a-private-docker-registryGitLab Documentation
http://doc.gitlab.com/ce/ci/yaml/README.html#using-a-private-docker-registry

10
建議可以用docker-compose.yml這個來做,會較方便

代碼: [選擇]
docker-compose -f docker-compose.yml build

就可以幫你把volume & link都做好。

11
我推...... +++ ;D  支持Haway版主 開好開滿…

12
https://github.com/ghantoos/lshell

這個你可以參考看看,我之前有玩一下,還不錯。

13
拾人牙慧 / L2tp over IPSec on Ubuntu 12.04
« 於: 2014-04-30 19:45 »
L2TP Over IPSec
環境介紹:(在VirtualBox上實作,有做nat)

準備二台Ubuntu 12.04.4

一台叫Right, 一台叫Left

Right                                            Left
eth0 10.0.2.5 (DHPC取得IP)    eth0 10.0.2.6 (DHCP取得IP)
eth1 192.168.1.10 (Static IP)    eth1 192.168.2.10 (Static IP)

先安裝基本套件及所需的Repo

代碼: [選擇]
apt-get update
apt-get install python-software-properties
add-apt-repository ppa:xelerance/xl2tpd
add-apt-repository ppa:openswan/ppa
apt-get update

安裝L2TP套件

代碼: [選擇]
apt-get install xl2tpd

編輯設定檔 /etc/xl2tpd/xl2tpd.conf,這是主要要設定檔

代碼: [選擇]
[global]
ipsec saref = no

[lns default]                                   #Server端
ip range = 192.168.2.50-192.168.2.100           #要給Client端連進來的IP Scope
local ip = 192.168.2.1                          #給一個內網IP,並且不要跟現在內網有的IP重覆即可
require chap = yes                              #是否使用CHAP認証
require authentication = yes                     
ppp debug = yes                                 #log會在/var/log/syslog
pppoptfile =/etc/ppp/options.xl2tpd             #pppoe的設定檔案位置
length bit = yes

[lac username]                                  #Client端撥給對面的Server所用的名稱"username"
lns = 10.0.2.5                                  #自已的對外IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client 
length bit = yes

設定DNS及安全認証方式,/etc/ppp/options.xl2tpd

代碼: [選擇]
require-chap
ms-dns 8.8.8.8
lcp-echo-interval 10
lcp-echo-failure 3
auth
refuse-mschap-v2
refuse-mschap
asyncmap 0
auth
lock
hide-password
local
#debug
name l2tpd
proxyarp
mtu 1404
mru 1404

設定L2TP Client端的設定檔,/etc/ppp/options.l2tpd.client

代碼: [選擇]
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
idle 1800
mtu 1410
mru 1410
defaultroute
replacedefaultroute
usepeerdns
debug
lock
connect-delay 5000
name username                                 #撥接時的帳號
password password                             #撥接時的密碼

新增Client端連線進來的帳號及密碼,/etc/ppp/chap-secrets,即為ppp服務
Client 指的使用者名稱
Server 指的是撥入Server的IP
IP addresses 指的是撥入後進來拿到IP的範圍,若先前有在xl2tpd.conf裡設定好ip range,此處就可以用*號表示

代碼: [選擇]
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
username     *         passwd                 *

重開L2tp

代碼: [選擇]
/etc/init.d/xl2tpd restart

連結L2TP Server,即連接到指定的lac
這個撥打過去,會跟Server端的/etc/ppp/chap/secrets做驗証,如果正確就連結。

代碼: [選擇]
echo 'c lac-name' > /var/run/xl2tpd/l2tp-control

安裝OPENSWAN套件

代碼: [選擇]
apt-get install openswan

IPSec主要設定檔,/etc/ipsec.conf
二台的IPSec的主要設定檔要長的一樣

代碼: [選擇]
version 2.0
config setup
    dumpdir=/var/run/pluto/
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
    oe=off
    protostack=netkey                   #default是auto,要改成netkey

conn net-net                           
    authby=secret
    left=10.0.2.5                       #設對方的對外IP
    leftsubnet=192.168.1.0/24           #設對方的內部網段
    leftnexthop=%defaultroute           #採預設路由的方式
    right=10.0.2.4                      #設自已的對外IP
    rightsubnet=192.168.2.0/24          #設自已的內部網段
    rightnexthop=%defaultroute          #採預設路由
    auto=start

編輯/etc/ipsec.secrets
我採用的是sample roadwarrior,如果要用其他的寫法,請參考man ipsec.secrets

代碼: [選擇]
# sample roadwarrior
%any gateway.corp.com: PSK "shared secret with many roadwarriors"
%any 10.0.2.1 : PSK "passwd"

編輯/etc/sysctl.conf,啟用IPv4轉發

代碼: [選擇]
net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter = 0

編輯完後,執行以下指令,使其生效

代碼: [選擇]
sysctl -p

腳本設定

代碼: [選擇]
#!/bin/bash
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done

防火牆

代碼: [選擇]
iptables  -t nat   -A POSTROUTING -o eth0 -s 10.0.2.0/24 -j MASQUERADE

驗証IPSec

代碼: [選擇]
ipsec verify

若出現以下訊息,是說明並沒有將ICMP給關閉,請執行上面的腳本設定或是將其放至/etc/rc.local裡,開機時,自動啟用。

代碼: [選擇]
NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects                [NOT DISABLED]

  Disable /proc/sys/net/ipv4/conf/*/send_redirects or NETKEY will cause act on or cause sending of bogus ICMP redirects!

         ICMP default/accept_redirects              [NOT DISABLED]

  Disable /proc/sys/net/ipv4/conf/*/accept_redirects or NETKEY will cause act on or cause sending of bogus ICMP redirects!

再次執行

代碼: [選擇]
ipsec verify

連結IPSec

代碼: [選擇]
ipsec auto --up net-net


參考文獻
太多了,大概看了二十幾篇綜合的結果,有參考日京三子大的筆記、ubuntu官方、對岸同胞的博客及一些國外的網站,總而言之,族繁不及備載。

14
Linux 討論版 / Re: 【請教】L2TP over ipsec
« 於: 2014-04-17 10:29 »
此題已解套了,目前我只先做l2tp的Server - Client的溝通,尚未做加密的部份,但目前已可以將二個不同的網段給打通了! 泣~~~T^T

15
Linux 討論版 / Re: 【請教】L2TP over ipsec
« 於: 2014-04-10 19:24 »
回netman大:

謝謝!我也看到這個keyword,也尚在努力中!>"<

16
Linux 討論版 / Re: 【請教】L2TP over ipsec
« 於: 2014-04-08 23:58 »
我的log噴了這個以下訊息

代碼: [選擇]
Apr  8 23:55:19 Ubuntu3 xl2tpd[3125]: death_handler: Fatal signal 15 received
Apr  8 23:55:20 Ubuntu3 xl2tpd[3353]: setsockopt recvref[30]: Protocol not available
Apr  8 23:55:20 Ubuntu3 xl2tpd[3353]: This binary does not support kernel L2TP.
Apr  8 23:55:20 Ubuntu3 xl2tpd[3354]: xl2tpd version xl2tpd-1.3.1 started on Ubuntu3 PID:3354
Apr  8 23:55:20 Ubuntu3 xl2tpd[3354]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
Apr  8 23:55:20 Ubuntu3 xl2tpd[3354]: Forked by Scott Balmos and David Stipp, (C) 2001
Apr  8 23:55:20 Ubuntu3 xl2tpd[3354]: Inherited by Jeff McAdams, (C) 2002
Apr  8 23:55:20 Ubuntu3 xl2tpd[3354]: Forked again by Xelerance (www.xelerance.com) (C) 2006
Apr  8 23:55:20 Ubuntu3 xl2tpd[3354]: Listening on IP address 0.0.0.0, port 1701

這是我的kernel 3.11.0-15-generic

但google了好久,發現有些人也有這問題,但卻沒看到解法,有大大有解嗎?煩請指教小弟~~!!!

先說明一下,我這只是有很單純的安裝xl2tpd這個套件而已,其他的什麼都沒有裝!

17
Linux 討論版 / Re: 【請教】L2TP over ipsec
« 於: 2014-04-08 11:06 »
btw 剛好有另一個問題想再請教一下,做認證時,是一定要用x.509的key去驗證嗎?

18
Linux 討論版 / 【請教】L2TP over ipsec
« 於: 2014-04-08 10:49 »
請問各位大大:
os: ubuntu12.04.4 (二台都是),通通都在virtualbox測的
L2TP over ipsec 要怎麼連線?

我目前架二台L2TP over ipsec,
server1:
  eth0:10.0.1.10 (NAT 網路) gw 10.0.1.1
  eth1:192.168.1.10 (內部網路) 沒有gw
server2:
  eth0:10.0.1.11(NAT 網路) gw 10.0.1.1
  eth1:192.168.2.10 (內部網路) 沒有gw


目的是要把從server1到server2的內部網路互相打通?

我下xl2tpd -D
出現IPsec SAref does not work with L2TP kernel mode yet, enabling forceuserspace=yes

19
補充:

        如有興趣一起做demo的話,可以自帶筆電哦!

20
程式討論版 / Re: shell script 請教
« 於: 2014-02-13 18:08 »
變數替換的時候,加上雙引號~^ _ ^


回Yamaka大:
echo 出來是正確的!

回netman大:
其實我有沒有加雙引號都沒差!
我想再請問一下,當我下ps axu | grep php | awk '{ print $12 }' | grep $PHP  出來的程式不會固定在某一個位置,那有什麼好辦法可以抓到它?


自已回一下,因ps axu | grep php | awk '{ print $12 }' | grep $PHP 找出來的會亂跑,所以我就找到另一種方法來做,用  awk '/pattern/{ print $X}' ,這樣做法就不管我要找的那支程式怎麼跑,我都可以正確抓到我要的。以下是完整的寫法,也感謝netman大的指導。

代碼: [選擇]
PHP='/var/www/user.php'
CHECK=`ps axu | grep php | awk '/\/var\/www\/user.php/{ print $12 }'`

if [ "${CHECK}" = ${PHP} ];then
  echo "OK"
else
  echo "Fail"
fi

21
程式討論版 / Re: shell script 請教
« 於: 2014-02-13 17:22 »
"${variable}" 才是替換
你剛才是設定變數,不是替換變數。

如果沒意外,這個月我會去臺北跟大家講一場 shell script ,請留言公告吧~ ^ _ ^


耶~~~謝謝netman大大!
原來是我加錯地方了!冏~~
剛修改時,有發現差異了!謝謝指教!
希望netman大大可以到台北來,超期待的,一定到場聽講!(灑花~~~

22
程式討論版 / Re: shell script 請教
« 於: 2014-02-13 13:38 »
你加看看就知道了~

差在沒有值的時候


回netman大:

PHP="'/var/www/user.php'"
CHECK="`ps axu | grep php | awk '{ print $12 }' | grep $PHP`"

if [ ${CHECK} = ${PHP} ];then
  echo "OK"
else
  echo "Fail"
fi

是這樣加的嗎?小弟愚味~~~!!!

23
程式討論版 / Re: shell script 請教
« 於: 2014-02-13 12:31 »
變數替換的時候,加上雙引號~^ _ ^


回Yamaka大:
echo 出來是正確的!

回netman大:
其實我有沒有加雙引號都沒差!
我想再請問一下,當我下ps axu | grep php | awk '{ print $12 }' | grep $PHP  出來的程式不會固定在某一個位置,那有什麼好辦法可以抓到它?

我本來是打算用 ps axu | grep php | awk '{ print $12 }' | grep $PHP && echo $?

if [ $? = 0 ];then
  echo "OK"
else
  echo "Fail"
fi

但後面那個 && echo $? 反而是去判斷這個指令有無成功,返回值都是0,即使比對的東西是錯的,也是返回值0。

24
程式討論版 / shell script 請教
« 於: 2014-02-13 11:55 »
各位大大好,小弟又來發問了,目前的情況是我要寫一支shell script去檢查某一支php有沒有執行,但每次執行出來的都是fail,煩請各位大大指教

代碼: [選擇]
PHP='/var/www/user.php'
CHECK=`ps axu | grep php | awk '{ print $12 }' | grep $PHP`

if [ ${CHECK} = ${PHP} ];then
  echo "OK"
else
  echo "Fail"
fi

代碼: [選擇]
執行結果:
+ PHP=/var/www/user.php
+ grep /var/www/user.php
+ awk { print $12 }
+ grep php
+ ps axu
+ Check=/var/www/user.php
/var/www/user.php
+ [ = /var/www/user.php ]
check_php: 16: [: =: unexpected operator
+ echo Fail
Fail





25
Linux 討論版 / Re: vim 不分大小寫多檔搜尋
« 於: 2013-12-27 10:25 »
回ericchung大:

方法有二種
1 直接設定在.vimrc
2 /\c  或用:set ic

by the way
GOOGLE一下vim,你可以看到更多有趣的快捷和功能!

26
換個方式如果是去監看 pid 呢?


回haway大大:

這個本來也有想過

Q1:假設我懷疑是php程式所刪除的,那我去監控php的父程序,那是不是也可以監控得到底下所有子程序的行為?? ???

root      5658  0.0  0.0 254012  7912 ?        Ss   Nov25  14:58 php-fpm: master process (/etc/php-fpm.conf)     
nobody   21602  2.6  0.1 260164 29256 ?        S    14:00   0:04 php-fpm: /path/xxx (/aaa/xxx.php)                                                     
                                 
nobody   21645  3.8  0.1 262072 31732 ?        S    14:00   0:06 php-fpm: /path/xxx (/aaa/xxx.php)

Q2: 那如果不是php的程式所刪,那我要如何得知我應該要去監控哪一個pid才是正確的? ???

小弟愚味,請指教!@@"


27

所以小弟想問,那是否我監控mount point目錄時用下面這種二種指令的差異性是?? ???
代碼: [選擇]
# auditctl -w /home/test.txt -p rw -k test
# auditctl -a exit,always -S unlink

代碼: [選擇]
auditctl -a exit,always -F arch=b64 -S unlink -F path=/mnt/test/test.txt  -F perm=rw -k test
後來我自已測試了一下,指令都是可以使用的,只是跳出來的log結果會不同,看起來要以第一個方法去下指令比較正確,使用-a 這個參數,會去附加到前一條的規則。(若有錯誤,煩請指教)

28
回haway大大
用-w 的參數我也試過,是可以正常使用的。但由於我放到線上的伺服器去做時,就會報錯,好像是因為本身mount 過來的資料(從netappp上mount過來的),不給監控,當我一下auditctl -w /mnt/test/test.txt -p rw -k test,就會被killed,妙的是我要kill auditctl的父程序時,還砍不掉,最後會導致zombie。

後來也有改用-q,結果還是一樣會報錯誤,我猜想應該是netapp那台機器本身有限制了,所以導致無法監控其檔案,目前正在查找其他方式來實現! :'(

29
回應一下自已剛剛問的問題,後來測試一下,發現原來其實下這樣也行
代碼: [選擇]
auditctl -a exit,always -F arch=b64 -S unlink -F path=/home/test.txt  -F perm=rw -k test-a 附加規則
-F 是建立檔案要監控的規則
-S 要監視的系統呼叫的名稱
-k 指定 keyword,方便ausearch時使用

但出現的LOG卻不會出現是誰砍了test.txt,只會出現updated rules如下:
代碼: [選擇]
type=CONFIG_CHANGE msg=audit(12/24/2013 16:34:57.024:110) : auid=root ses=4 op="updated rules" path=/home/test.txt key=test list=exit res=1
當我去監控mount point的檔案時,我打的指令是下面這行
代碼: [選擇]
auditctl -a exit,always -F arch=b64 -S unlink -F path=/mnt/test/test.txt  -F perm=rw -k test
出現的LOG也不會出現是誰砍了test.txt,只會出現updated rules如下:
代碼: [選擇]
type=CONFIG_CHANGE msg=audit(12/24/2013 16:34:57.024:110) : auid=root ses=4 op="updated rules" path=/home/test/test.txt  key=test list=exit res=1

但後來我又去查了man page,我就把-F 改成 -q,卻會出現錯誤,指令如下:
代碼: [選擇]
auditctl -a exit,always -F arch=b64 -S unlink -q /mnt/photo,/mnt/test/test.txt  -F perm=rw -k test
Syscall auditing requested for make equivalent

於是乎我索性就把-S unlink給拿掉了,然後再把檔案給砍掉
代碼: [選擇]
type=CONFIG_CHANGE msg=audit(12/24/2013 16:44:55.532:111) : auid=root ses=4 op="remove rule" key=test list=exit res=1
下面這個是去監控local端的指令&log
代碼: [選擇]
# auditctl -w /home/test.txt -p rw -k test
# auditctl -a exit,always -S unlink

log:
type=PATH msg=audit(12/24/2013 17:09:26.248:138) : item=1 name=/home/test.txt inode=528492 dev=fc:00 mode=file,644 ouid=root ogid=root rdev=00:00
type=PATH msg=audit(12/24/2013 17:09:26.248:138) : item=0 name=/home/ inode=522242 dev=fc:00 mode=dir,755 ouid=root ogid=root rdev=00:00
type=CWD msg=audit(12/24/2013 17:09:26.248:138) :  cwd=/var/log/audit
type=SYSCALL msg=audit(12/24/2013 17:09:26.248:138) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=ffffffffffffff9c a1=155f0c0 a2=0 a3=7fff91809c40 items=2 ppid=1346 pid=3980 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root ses=4 tty=pts0 comm=rm exe=/bin/rm key=test


所以小弟想問,那是否我監控mount point目錄時用下面這種二種指令的差異性是?? ???
代碼: [選擇]
# auditctl -w /home/test.txt -p rw -k test
# auditctl -a exit,always -S unlink

代碼: [選擇]
auditctl -a exit,always -F arch=b64 -S unlink -F path=/mnt/test/test.txt  -F perm=rw -k test


參考資料:
http://lccnetvip.pixnet.net/blog/post/36136146-聯成電腦講師專欄:使用-linux-系統下的存取
http://manpages.ubuntu.com/manpages/maverick/man8/auditctl.8.html

30
剛剛測試了一下,確定是可以抓到是誰砍掉的

代碼: [選擇]
type=PATH msg=audit(12/24/2013 14:25:22.680:60) : item=1 name=/home/test.txt inode=522246 dev=fc:00 mode=file,777 ouid=root ogid=root rdev=00:00
type=PATH msg=audit(12/24/2013 14:25:22.680:60) : item=0 name=/home/ inode=522242 dev=fc:00 mode=dir,755 ouid=root ogid=root rdev=00:00
type=CWD msg=audit(12/24/2013 14:25:22.680:60) :  cwd=/home/daniel
type=SYSCALL msg=audit(12/24/2013 14:25:22.680:60) : arch=x86_64 syscall=unlinkat success=yes exit=0 a0=ffffffffffffff9c a1=11a10c0 a2=0 a3=7fffdba9ed00 items=2 ppid=1346 pid=2426 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root ses=4 tty=pts0 comm=rm exe=/bin/rm key=test

頁: [1] 2 3