標籤彙整:linux
推薦使用tmux – a "terminal multiplexer"
tmux是一個類似常見的GNU Screen軟體,那作者為啥還開發呢,原因單純,他覺得Screen使用的Licence是GNU有些限制,所以就順手寫了一個類似功能但是卻是用BSD Licence,除了Screen常用的功能都有外,tmux還可以在單一一個window中處理多個不同的terminal,如果你常跟我之前一樣需要常常切換在Screen之間去做事情,你一定會愛死tmux的!!
ip_conntrack: table full, dropping packet
之前架設一台vpn時, 由dmesg看到一個警告訊息 "ip_conntrack: table full, dropping packet" google了一下發現似乎是個還蠻常見的問題,通常是NAT user過多或是同時建立太多tcp connection,導致table爆炸,因為Linux Kernel在NAT預設的tcp timeout是五天,難怪user多就爆炸。所以改法很簡單,就是把table加大,timeout縮短即可,要注意的是table所使用的memory為 ip_conntrack_max * 232 Bytes 所以要小心大小,不要改的太爽,加到超過你記憶體能夠負擔的能力,步驟如下: 首先查看一下table size以及timeout預設是多少: cat /proc/sys/net/ipv4/ip_conntrack_max cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 上面兩行指令能告訴你,目前機器上的table大小及tcp timeout時間 改法有二, 選一個你喜歡的作法即可 :Q 方法一: sysctl -w net.ipv4.ip_conntrack_max=131072 (or 任何妳喜歡且不會爆的值) sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=600 (把這兩行寫到你的開機啟動檔裡面) 方法二: 編輯/etc/sysctl.conf, … 繼續閱讀
高效率的iptables GEOIP模組
手邊有台vpn server上面用iptables跑policy routing,連往大陸地區就從特定interface出去,之前的做法是到apnic取得大陸地區最新的ip list後,再利用script一行一行餵進去iptables裡面,即使做過CIDR merge後,還是快要達到800筆record,每每上線使用者一多、或是流量變大時機器的loading就會增加,這種作法不用分析也大概猜得出來,iptables內部作rule match是採用list match,當rule量很大的時候,效能當然會變差。
在Tomato firmware下直接連線到ADSL Modem
Tomato Firmware支援許多搭載broadcom晶片的無線網路分享器,在網路上廣受好評,我也是他的愛用者之一。一般家庭擁有無線網路的家庭最常見的網路配置方式應該如下圖所示: 如此的架構下,無線網路分享器下面的機器便無法直接連線進去ADSL modem中去看一些資訊(圖中192.168.1.1乃中華電信modem預設的IP),要解決這個問題只需幾個簡單的動作。 使用瀏覽器進入Tomato管理介面 到Administration -> Scripts -> Init標籤頁面,輸入: ifconfig vlan1:0 192.168.1.2 netmask 255.255.255.0 接著到Administration -> Scripts ->Firewall標籤頁面,輸入: /usr/sbin/iptables -I POSTROUTING -t nat -o vlan1 -d 192.168.1.0/24 -j MASQUERADE 最後使用瀏覽器,看看是否能成功連線至Modem設定頁面。
使用iptables來抵擋brute force ssh攻擊
每天都會有script kids到處亂掃機器,嘗試使用一些簡單常見的組合,看看能不能瞎貓碰到死號子,成功矇進去機器裡面,相信這是手邊有機器的朋友們共同的遭遇,打開log應該都是一整片try and error的紀錄。雖然透過這種方式成功的機會實在不高,但是機器三不五時就讓人家這樣try還是很不爽,有時候遇到機車一點的,還用個超長字典檔來嘗試,導致系統loading增高,感覺實在不好受。 網路上有許多現成的script或是套件來幫忙阻擋,雖然多了一些比較彈性的設定以及美美的統計,但是對我來說,只要能達到阻擋目的即可,所以我選擇不安裝額外套件的方式,採取已經就存在的iptables中的recent module來抵擋。只要短短兩行就搞定了: iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH -j ACCEPT iptables -A INPUT -p tcp –dport 22 -m recent –update –seconds 60 –hitcount 4 –rttl –name … 繼續閱讀
如何送command至第n層的Screen
使用*nix的朋友應該都對screen這個方便的工具相當熟悉。今天一個朋友向我求救他遇到的問題,他在A機器的screen中ssh到了B機器,在B機器上面reattch之前的screen session (使用screen -r),當他工作結束後,打算detach在B機器的screen session,很自然的按了 Ctrl a + d的命令,卻發現竟然是A機器的screen被detach掉而非B機上的! 解法很簡單: Ctrl + a + a + d 即可 換句話說,你要送給第n個screen指令時,就按幾次"a"就對啦!!希望對遇到相同問題的人有幫助。
Debian Multi-WAN QoS Howto
[注意] 引用本文請完整引用並須於引用文章中列上本文章的完整連結 [前言] 某個的vpn設置的時候是希望滿足兩個條件: 1) 隨時可以使用內部ip存取經過ip認證的服務。(如: IEL) 2) 利用固定制ADSL的路由優勢存取原本需要繞遠路的網域 (如:連往對岸),增快存取速度。 [架構]
How to use rtgui with PHP4
rtorrent是unix下面一個lightweight but powerful的BT Client. 跟許多console mode軟體不同的是, 他提供完整的xmlrpc api讓developer可以開發自己的interface來管理使用rtorrent. 我選用了rtgui, 本來以為只要幾分鐘就可以設定好, 沒想到卻遇到不能預期的錯誤, trace一下才發現原來是 file_get_contents這個function在PHP 5.0.0以後才support $context這個參數. 所以只好自己用curl hack一個給PHP < 5.0.0可以動的版本. (需要有curl extension) 目前用起來是沒遇到任何問題, 搞定收工. Here is the hack (把functions.php裡面的do_xmlrpc整段換成): function do_xmlrpc($request) { global $rpc_connect; if (version_compare(PHP_VERSION, '5.0.0', '>=')) { $file = … 繼續閱讀
