各種proxy設定(環境変数, yum.conf, wgetrc)
各種proxyの設定方法です。
環境変数
bash
export http_proxy="${proxyURL}:${port}" export https_proxy="${proxyURL}:${port}"
tcsh
setenv http_proxy ${proxyURL}:${port} setenv https_proxy ${proxyURL}:${port}
wget
wgetrcを作成・編集する
vi /etc/wgetrc ### 以下の2行編集 http_proxy = ${proxyURL}:${port} ftp_proxy = ${proxyURL}:${port}
I/O waitが発生する原理(dirtyメモリ、write back)
I/O waitにはdirtyメモリとwrite back処理(pdflush)が深く関係しています。
書き込み処理
低負荷時
書き込み処理(見かけ上の書き込み処理)
↓
dirtyフラグと一緒に随時メモリに書き込まれる(dirtyメモリ)
↓
5秒に一度dirtyメモリを読み取って実際に物理ディスクに書き込む(write back処理=実際の書き込み処理)
⇒これがI/O 処理の開始である。
中程度負荷時
書き込み処理(見かけ上の書き込み処理)
↓
dirtyフラグと一緒に随時メモリに書き込まれる(dirtyメモリ)
↓
dirtyメモリがある一定サイズに達した時点で、(5秒待たずに)I/O処理を開始して実際に物理ディスクに書き込む(write back処理)
高負荷時/過負荷時
書き込み処理(見かけ上の書き込み処理)
↓
dirtyフラグと一緒に随時メモリに書き込まれる(dirtyメモリ)
↓
dirtyメモリがある一定サイズに達した時点で、(5秒待たずに)I/O処理を開始して実際に物理ディスクに書き込む(write back処理)
↓
物理ディスクへの書き込み処理が完了する前に再び次のdirtyメモリが一定数に達してしまう。
↓
前のディスクへの書き込み処理が完了していないので、dirtyメモリが一定数になってもディスクへの書き込みが開始されず、前回のwrite back処理の終了を待たなければいけない
⇒これをI/Owaitという
各項目の設定値
これらのI/O waitに関する設定値はOSレベルで確認・変更することが出来る
vm.dirty_background_ratio
メモリ上のdirtyメモリが占める割合(%)。
この値を超えるとpdflushが呼び出され、write back処理がが行われる。
但し、このwrite back処理は優先度の低いバックグラウンドプロセスとして実行される。
デフォルト値は10%。単位は%
/sbin/sysctl vm.dirty_background_ratio
# ==> vm.dirty_background_ratio = 10
vm.dirty_ratio
vm.dirty_backgroup_ratioとほぼ同じだが、この値を超えた場合は、write back処理が優先度の高いフォアグラウンドプロセスとして実行される
デフォルト値は20%。単位は%
/sbin/sysctl vm.dirty_ratio
# ==> vm.dirty_ratio = 20
vm.dirty_expire_centisecs
メモリ上に存在しているdirtyメモリの存在時間。
この値を過ぎた場合にwrite back処理が実行される
デフォルト値は3000(30秒)単位は1/100秒
/sbin/sysctl vm.dirty_expire_centisecs
# ==> vm.dirty_expire_centisecs = 3000
vm.dirty_writeback_centisecs
pdflushデーモンが起動する間隔。
この間隔でdirtyメモリのデータが物理ディスクに書き込まれる
デフォルト値は500(5秒)。単位は1/100秒
/sbin/sysctl vm.dirty_writeback_centisecs
# ==> vm.dirty_writeback_centisecs = 500
screenで画面分割中に他の画面の内容をコピペする方法
方法
コピー
# screen コマンドの開始 Ctrl+a # コピーモードの開始 [ # 始点の決定 Space # 終点の決定 Space
ペースト
# screen コマンドの開始 Ctrl+a # ペースト ]
pingでport指定したい時
結論から言うとpingでは通常port指定が出来ないので「nping」コマンドを使いましょう。
ダウンロード
nmapと一緒にダウンロードされるので、nmapをinstallします
yum install nmap
コマンド
使用法
nping ${host} -p ${port}
例
成功した場合
nping 175.41.202.96 -p 3000 Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2015-10-14 01:02 UTC SENT (0.0178s) ICMP 10.184.30.164 > 175.41.202.96 Echo request (type=8/code=0) ttl=64 id=64344 iplen=28 ・ ・ ・ RCVD (4.0249s) ICMP 175.41.202.96 > 10.184.30.164 Echo reply (type=0/code=0) ttl=44 id=19074 iplen=28 Max rtt: 4.060ms | Min rtt: 2.359ms | Avg rtt: 2.797ms Raw packets sent: 5 (140B) | Rcvd: 5 (140B) | Lost: 0 (0.00%) Tx time: 4.00481s | Tx bytes/s: 34.96 | Tx pkts/s: 1.25 Rx time: 5.00624s | Rx bytes/s: 27.97 | Rx pkts/s: 1.00 Nping done: 1 IP address pinged in 5.04 seconds
ネットワークが繋がらないときに調査する8項目+α
クライアント側(接続元)での確認
ping
ping ${host} Ex.) ping 54.168.196.212 ・ ・ ・ 6 packets transmitted, 6 received, 0% packet loss, time 5387ms <== ここが0% packet lossじゃない場合おかしい rtt min/avg/max/mdev = 0.432/0.471/0.533/0.041 ms
Check Point
- そもそもサーバ自体へのアクセスが正常に出来ていない
- pingはicmpというプロトコルを使っているのでicmpの制限がかかっていないかチェック
- pingはport指定できない(Solarisのみ出来る?)ので、port指定したい場合は以下の「nping」コマンドを使う
nping
nping ${host} --tcp -p ${port} Ex.) # nping 54.168.87.131 --tcp -p 3000 Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2015-10-09 05:39 UTC . . . Max rtt: 2.705ms | Min rtt: 2.363ms | Avg rtt: 2.494ms Raw packets sent: 3 (120B) | Rcvd: 3 (132B) | Lost: 0 (0.00%) # ⇒Lostが 0 (0.00%)なことを確認 Tx time: 2.34737s | Tx bytes/s: 51.12 | Tx pkts/s: 1.28 Rx time: 2.34737s | Rx bytes/s: 56.23 | Rx pkts/s: 1.28 Nping done: 1 IP address pinged in 2.36 seconds
Check Point
- Lostが0 になっていることを確認
nmap
nmap ${host} Ex.) nmap 54.199.127.181 Starting Nmap 5.51 ( http://nmap.org ) at 2015-10-09 05:29 UTC Nmap scan report for ******************** Host is up (0.0025s latency). Not shown: 985 filtered ports PORT STATE SERVICE 22/tcp open ssh 23/tcp closed telnet 80/tcp closed http 3000/tcp open ppp 10000/tcp closed snet-sensor-mgmt 10001/tcp closed scp-config . . .
Check Point
- 目的のportのSTATEがopenかどうか確認する
telnet
telnet ${host} ${port} Ex.) telnet 54.168.196.212 22 Trying 54.168.196.212... Connected to 54.168.196.212. Escape character is '^]'. SSH-2.0-OpenSSH_5.3
CheckPoint
- アクセス出来ないときは「Trying ${host}...」で止まったままになる
サーバ側(接続先)での確認
ss
ss -lnpt | grep ${対象port} Ex.) ss -lnpt | grep 3000 LISTEN 0 128 *:3000 *:* users:(("ruby",1548,8
CheckPoint
- port番号の前が*でなく特定のipだった場合は、そのipからのアクセスしか受け付けないという意味
- railsやsinatraなどのrackアプリケーションでweblickを使う場合、ここがデフォルトでは127.0.0.1になっている場合があるので注意
[Ruby] sinatraがポート4567を指定しても繋がらない - 脳汁portal
iptables
iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
CheckPoint
- policyがDROPになっている場合は記載されているルール以外の全てのアクセスをRejectするので注意
- AWSデフォルトの「REJECT all -- anywhere anywhere reject-with icmp-host-prohibited」も結構悪さをする印象です
AWSでpingは通るのに実際に接続しようとすると「No route to host」って言われる原因 - 脳汁portal
netstat
netstat -antu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 96 10.123.29.206:22 133.237.7.83:61023 ESTABLISHED tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN udp 0 0 0.0.0.0:68
CheckPoint
- 対象のportのStateがListenになっているか確認する
Historyコマンドに日時情報を追加する方法
LinuxのHistoryコマンドに日時データを追加する方法です。
結果
何もしないと以下のようにコマンドしかわかりません。
$ history . . . 1001 cd 1002 ls -la 1003 date 1004 cat /etc/issue 1005 history
上記コマンドをうつと日時データが取得できます
. . . 1001 15/09/28 12:41:22 cd 1002 15/09/28 12:41:24 ls -la 1003 15/09/28 12:41:27 date 1004 15/09/28 12:41:34 cat /etc/issue 1005 15/09/28 12:41:37 hitotry 1006 15/09/28 12:41:38 history 1007 15/09/28 12:43:00 export HISTTIMEFORMAT='%y/%m/%d %H:%M:%S ' 1008 15/09/28 12:43:02 history
注意
このコマンドをうってからの情報しか取得できません。
shellを抜けても過去の情報はのこっていますが、それ以前の昔のデータなどはそもそも日時データが保存されていないので取得することができません。
なので、ログイン時に自動でこの環境変数をsetするようにしておくといいでしょう。
ログイン時に自動設定する方法
cd ~ vi .bash_profile #末尾に以下を追加 export HISTTIMEFORMAT='%y/%m/%d %H:%M:%S '