Sharing

2013年2月17日 星期日

iptables 設定筆記


基本的操作可以參考鳥哥的文章

http://linux.vbird.org/linux_server/0250simple_firewall.php

列出某一個 Table 的 Rule
root@ubuntu:~$ iptables -t nat -L -n                                                            
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  tcp  --  192.168.228.0/22    !192.168.228.0/22     masq ports: 1024-65535
MASQUERADE  udp  --  192.168.228.0/22    !192.168.228.0/22     masq ports: 1024-65535
MASQUERADE  all  --  192.168.228.0/22    !192.168.228.0/22
SNAT       all  --  0.0.0.0/0            0.0.0.0/0            source IP range 192.168.229.1-192.168.231.254 destination
IP range 172.18.203.1-172.18.203.250 to:172.18.203.254
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in eth1
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in eth2
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in eth3
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap0
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap1
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap2
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap3
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap4
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap5
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap6
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap7
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap8
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap9
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in vnet0
MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in vnet1

列出某一個 Table 的 Rule 並且加上編號, 這個編號在刪除 rule 時會用到
root@ubuntu:~$ iptables -t nat -nL --line-numbers          
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    MASQUERADE  tcp  --  192.168.228.0/22    !192.168.228.0/22     masq ports: 1024-65535
2    MASQUERADE  udp  --  192.168.228.0/22    !192.168.228.0/22     masq ports: 1024-65535
3    MASQUERADE  all  --  192.168.228.0/22    !192.168.228.0/22
4    SNAT       all  --  0.0.0.0/0            0.0.0.0/0            source IP range 192.168.229.1-192.168.231.254 destina
tion IP range 172.18.203.1-172.18.203.250 to:172.18.203.254
5    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in eth1
6    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in eth2
7    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in eth3
8    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap0
9    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap1
10   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap2
11   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap3
12   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap4
13   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap5
14   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap6
15   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap7
16   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap8
17   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in tap9
18   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in vnet0
19   MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0            PHYSDEV match --physdev-in vnet1


列出某一個 table 的 rule 指令
root@ubuntu:~$ iptables-save -t nat
# Generated by iptables-save v1.4.12 on Mon Feb 18 14:43:37 2013
*nat
:PREROUTING ACCEPT [17013:1897631]
:INPUT ACCEPT [12931:1479517]
:OUTPUT ACCEPT [7294:518260]
:POSTROUTING ACCEPT [7677:530072]
-A POSTROUTING -s 192.168.228.0/22 ! -d 192.168.228.0/22 -o eth2 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.228.0/22 ! -d 192.168.228.0/22 -o eth2 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.228.0/22 ! -d 192.168.228.0/22 -o eth2 -j MASQUERADE
-A POSTROUTING -m iprange --src-range 192.168.229.1-192.168.231.254 --dst-range 172.18.203.1-172.18.203.250 -j SNAT --to-source 172.18.203.254
-A POSTROUTING -o eth0 -m physdev --physdev-in eth1 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in eth2 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in eth3 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap0 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap1 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap2 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap3 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap4 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap5 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap6 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap7 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap8 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in tap9 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in vnet0 -j MASQUERADE
-A POSTROUTING -o eth0 -m physdev --physdev-in vnet1 -j MASQUERADE
COMMIT
# Completed on Mon Feb 18 14:43:37 2013

刪除某個 chain 的第 n 條 rule
root@ubuntu:~$ iptables -t nat -D POSTROUTING 4

2013年2月6日 星期三

Linux Useful Little Tools

NOSQL reading list

Infrastructure Tooling List



http://server.dzone.com/articles/infrastructure-tooling-patterns-list

一個 Infrastructure Provider 公司必須要做出來的幾個重要面向

Linux I/O Stack

野外急救課程



WFR野外急救課程簡介
http://www.miasan.com/action.html

Netflix culture


紀錄一下, 朋友分享的 slide

http://www.slideshare.net/reed2001/culture-1798664

Zookeeper Apache

官網

http://zookeeper.apache.org/
http://zookeeper.apache.org/doc/r3.3.2/zookeeperOver.html

Zookeeper 是一個分散式的儲存系統, 最常見是用來儲存分散式系統的設定, 就我看來, 他就像是分散式系統上的 registry, 同時他也提供了一些機制來幫助分散式中每一點同步資料, 同步意見, 所以他不是一個檔案系統, 不適合存大量的資料. 他也不是完整的 Configuration Management, 只能算是 Configuration Storage.

其它簡介

http://highscalability.com/zookeeper-reliable-scalable-distributed-coordination-system
http://rdc.taobao.com/blog/cs/?p=162
http://www.searchtb.com/2011/01/zookeeper-research.html

Python Binding


是一個用純 Python 實作的 Zookeeper client, 還滿好用的, 大量減化了和 Zookeeper 溝通的困難處, 而且一些進階的功能, 像是 Lock, Party, Election 都有實作出來, 所以推薦使用 Kazoo 做為 Zookeeper 的 Python Binding

拜佔庭將軍問題

在尋求一致的的過程中, 如果有消息遺失或是被內賊竄改, 在什麼情況下仍然能讓所有人的意見達成一致性?

http://en.wikipedia.org/wiki/Byzantine_fault_tolerance
拜占庭將軍問題

Paxos 演算法

這個演算法是用來確保傳遞的消息的一致性, 在分散式系統內經常會被用到, 和拜佔庭將軍不同點在於, 這個演算法不假設有內賊存在的可能性.  但主要用來解決資料會隨著時間而改變, 如何確保每個人擁有的資料最終可以更新到最新的版本且是一致的.  更簡言的說法是一種分散式投票系統.

http://en.wikipedia.org/wiki/Paxos_algorithm
Zookeeper全解析
Paxos算法
http://research.microsoft.com/en-us/um/people/lamport/pubs/lamport-paxos.pdf