2014年11月24日 星期一

SALTSTACK 實用指令

salt-key -L                                 #列出目前有哪些minion的key

salt '*' state.highstate                    #正常執行

salt '*' state.highstate -v test=True       #模擬運行

salt '*' grains.ls                          #列出可用的grains

salt '*' grains.items                       #列出所有grains的名字及內容

salt -C 'G@os:Ubuntu' test.ping             #可以用正則來找出符合條件的

salt '*' saltutil.syn_all or saltutil.grains 這二個指令都是把自定義的grains丟到minion上
在minion的路徑是/var/cache/salt/minion/extmods/grains
參考文獻



Ubuntu 14.04 install Saltstack

環境介紹:(在VirtualBox上實作)
準備二台Ubuntu 14.04
一台叫saltmaster, 一台叫minion
saltmasterminion
eth0 10.0.2.5 (DHPC取得IP)eth0 10.0.2.6 (DHCP取得IP)
Step 1. Add Repository
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-software-properties
sudo apt-get install add-apt-repository ppa:saltstack/salt
sudo apt-get update
sudo apt-get install salt-master        #在slatmaster上執行就好
sudo apt-get install minion             #在minion上執行就好
Step 2. Configuration
/etc/salt/下,有一個主要設定檔,master,預設listen 4505 & 4506port
file_roots:
  base:
    - /srv/salt
interface: 10.0.2.13
這個是master主要的設定,預設interface就會抓你目前的IP,file_roots是指定你sls檔所要開始的位置,我還是比照官方的設定,一樣寫在/srv/salt下,然後在saltstack,第一個sls檔,叫top.sls,所有開始的設定,都是必須要從這個檔案開始讀取。
下面是saltmaster的目錄結構
/etc/salt# tree
.
├── master                            #主要設定檔
├── master.d
└── pki                               #放key的資料夾
    └── master
        ├── master.pem
        ├── master.pub
        ├── minions                   #放minion public key的資料夾
        │   └── salt
        ├── minions_pre               #當key還沒被master所認可時,key會被放這目錄下
        └── minions_rejected          #當key被master所拒絕時,key會被放到這目錄下

6 directories, 4 files
如果想要使用自動簽署public key from minion,就可以在/etc/salt/master加入auto_accept這個參數,預設是關閉的
auto_accept=yes

2014年11月23日 星期日

gpart 分割磁區

切 /dev/ada1 為例子
STEP 1. 先用gpart show查看目前的硬碟資訊
gpart show
STEP 2. 建立GPT Partition於ada1
gpart create -s GPT ada1
STEP 3. 查看gpart 狀態
gpart show

=>          63  976561551  ada0  MBR  (466G)
               63  976559157    1  freebsd  [active]  (466G)
  976559220       2394       - free -  (1.2M)
=>           0  976559157  ada0s1  BSD  (466G)
                0   50331648      2  freebsd-swap  (24G)
   50331648   33554432      1  freebsd-ufs  (16G)
   83886080   67108864      4  freebsd-ufs  (32G)
  150994944   67108864      5  freebsd-ufs  (32G)
  218103808   67108864      6  freebsd-ufs  (32G)
  285212672   67108864      7  freebsd-ufs  (32G)
  352321536  624237621      8  freebsd-ufs  (298G)
=>        34  4882808253  ada1  GPT  (2.3T)
             34  4882808253       - free -  (2.3T)
STEP 4. 於ada1上增加type為freebsd-ufs的partition
gpart add -b 34 -s 4882808253 -t freebsd-ufs ada1

其中,-b -s -t 是絕對必要參數 
 -b:start
 -s:size
 -t:fs_type
STEP 5.再執行gpart show可以看到該生出來的已經生出來
=>          63  976561551  da0  MBR  (466G)
               63  976559157    1  freebsd  [active]  (466G)
  976559220       2394       - free -  (1.2M)
=>           0  976559157  ada0s1  BSD  (466G)
                0   50331648      2  freebsd-swap  (24G)
   50331648   33554432      1  freebsd-ufs  (16G)
   83886080   67108864      4  freebsd-ufs  (32G)
  150994944   67108864      5  freebsd-ufs  (32G)
  218103808   67108864      6  freebsd-ufs  (32G)
  285212672   67108864      7  freebsd-ufs  (32G)
  352321536  624237621      8  freebsd-ufs  (298G)
=>        34  4882808253  ada1  GPT  (2.3T)
             34  4882808253    1  freebsd-ufs  (2.3T)
=>        34  4882808253  ufsid/4cecc4f9c9eaaa33  GPT  (2.3T)
             34  4882808253                       1  freebsd-ufs  (2.3T)
STEP 6.執行newfs
newfs -O2 -U /dev/ada1p1
Step 7.執行mount測試
mount /dev/ada1p1 /mnt

L2TP Over IPSec


環境介紹:(在VirtualBox上實作)
準備二台Ubuntu 12.04.4
一台叫Right, 一台叫Left
RightLeft
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 -y 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 daniel]                                    #Client端撥給對面的Server所用的名稱"daniel"
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 steven                                 #撥接時的帳號
password novell                             #撥接時的密碼
新增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
daniel          *        novell                 *
重開L2tp
/etc/init.d/xl2tpd restart
連結L2TP Server,即連接到指定的lac
這個撥打過去,會跟Server端的/etc/ppp/chap/secrets做驗証,如果正確就連結。
echo 'c steven' > /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 "novell"
編輯/etc/sysctl.conf,啟用IPv4轉發
net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter = 0
編輯完後,執行以下指令,使其生效
sysctl -p
防火牆
請依據實際上要開的port來做設定
iptables --table nat --append POSTROUTING --jump MASQUERADE
腳本設定
#!/bin/bash
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
驗証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


2014年10月27日 星期一

Ubuntu 14.04 rename network interface

本來一直以為在Ubuntu下,網卡大多都會以eth*來做為命名,但後來我發現原來不是,所以就想說把系統上原本設定的網卡名稱給重新命名

首先,先找出目前有哪幾張網卡,並將其網卡的mac address找出來

ifconfig -a | grep -i hwaddr

找到後,編輯 /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="網卡的mac address", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

 網卡的mac:已經透過 ifconfig -a | grep -i hwaddr 找出來,就把它填寫進去就行了。

 eth*:也是透過ifconfig -a 可以找到,或是到dmesg找也行。

eth0:變更成你自已想要的網卡名稱。


接下來就可以用 ifconfig eth0 up 把網卡叫起來了,設定網卡在  /etc/network/interface 下可以設定自已想要的static ip,設定好之後就可以重開服務了。


/etc/init.d/networking restart



service network-interface restart INTERFACE=eth0

第二個方法是參考自 /etc/init/network-interface.conf ,這個方法可以不開機就重開網路介面的方式。


References:
http://www.cyberciti.biz/faq/howto-linux-rename-ethernet-devices-named-using-udev/

2014年4月11日 星期五

Ubuntu 12.04.4 出現 RTNETLINK answers: File exists 解決方法

因為要在virtualbox上測試跑二個網卡時,一張跑nat,一張跑內部網卡,當eth0去跟DHCP要ip時,還可以正常拿到,eth1則用手動設定,但當我下sudo /etc/init.d/networking restart ,則是出現下面這個error:
RTNETLINK answers: File exists
Failed to bring up eth0.

冒似因為一開始eth1有手動設定ip時,linux本身有在/etc/udev/rules.d/ 下有獲得網卡資訊,但因為我有用做snapshot,然後又把vm給還原了,而且又有在/etc/network/interfaces 設定eth1有gateway的關係,重開網路就會出現這個問題,那在google大神的提示,就先用下面的
方法一:(正解)
首先,先把eth1的gateway給注解掉,如果有動過網路卡硬體,可以幹掉/etc/udev/rules.d/70-persistent-net.rules重開機重新取得網卡資訊,就解決些問題了。

方法二:
去看 /etc/init/network-interface.conf ,發現只要下這個指令: sudo service network-interface restart INTERFACE=eth1 就行了

但方法二我有實做,但只是不會讓它出現錯誤而已,冒似也不是正解,待查驗!?