小谢同学写的linux 服务器调优脚本

modify_sysctl.py

# -*- coding: utf-8 -*-
'''
Created on 2015-1-21

@author: xie
'''
'''
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 30000
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 9000 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
'''
import re,commands
SYSCTL_CONFIG = '/etc/sysctl.conf'
class SetSysctl():
def __init__(self):
self._sysctls = []
self._sysctls.append('net.ipv4.tcp_rmem = 4096 87380 16777216')
self._sysctls.append('net.ipv4.tcp_wmem = 4096 65536 16777216')
self._sysctls.append('net.core.wmem_default = 8388608')
self._sysctls.append('net.core.rmem_default = 8388608')
self._sysctls.append('net.core.rmem_max = 16777216')
self._sysctls.append('net.core.wmem_max = 16777216')
self._sysctls.append('net.core.netdev_max_backlog = 30000')
self._sysctls.append('net.core.somaxconn = 65535')
self._sysctls.append('net.ipv4.tcp_max_syn_backlog = 262144')
self._sysctls.append('net.ipv4.tcp_max_tw_buckets = 6000')
self._sysctls.append('net.ipv4.tcp_tw_recycle = 1')
self._sysctls.append('net.ipv4.tcp_tw_reuse = 1')
self._sysctls.append('net.ipv4.tcp_fin_timeout = 30')
self._sysctls.append('net.ipv4.ip_local_port_range = 9000 65535')
self._sysctls.append('net.ipv4.tcp_syncookies = 1')
self._sysctls.append('net.ipv4.tcp_max_orphans = 262144')
self._sysctls.append('net.ipv4.tcp_synack_retries = 2')
self._sysctls.append('net.ipv4.tcp_syn_retries = 2')
self._sysctls.append('')
self._sysctls.append('kernel.core_pattern = /home/core/core.%p')
self._create_core()
self._read_sysctl()
self._write_sysctl()

def _read_sysctl(self):
network = open(SYSCTL_CONFIG, 'r')
self._lines = []
for line in network:
flag = False
for sysctl in self._sysctls:
regex_str = sysctl.split('=')[0]
ma = re.match(r'^'+regex_str+'.*?', line, re.IGNORECASE)
if ma:
flag = True
break;
if not flag:
self._lines.append(line)
network.close()

def _write_sysctl(self):
sysctls = open(SYSCTL_CONFIG, 'w')
self._lines.extend(self._sysctls)
sysctls.write('\n'.join(self._lines))
sysctls.close()
commands.getoutput('sysctl -p')

def _create_core(self):
commands.getoutput('mkdir /home/core')
commands.getoutput('chown -R mc-ops:mc-ops /home/core')

if __name__ == '__main__':
SetSysctl()

modify_ulimit.py

<br /># -*- coding: utf-8 -*-
#!/usr/bin/env python2.7
'''
Created on 2013-5-6

@author: xie
'''
import commands, re,os

LIMIT_CONF = '/etc/security/limits.conf'
SOFT_NOFILE = '* soft nofile 1048576\n'
HAND_NOFILE = '* hard nofile 1048576\n'
SOFT_NPROC = '* soft nproc 1048576\n'
HAND_NPROC = '* hard nproc 1048576\n'
PROFILE_CONF = '/etc/profile'
ULIMIT_NOFILE = 'ulimit -HSn 1048576\n'

NPROC_LIMIT_CONF = '/etc/security/limits.d/90-nproc.conf'

def modify_ulimit():
lines = []
ulimit = open(LIMIT_CONF, 'r')
for line in ulimit:
ma = re.match(r'.*?soft *?', line, re.IGNORECASE)
mx = re.match(r'.*?hard *?', line, re.IGNORECASE)
if ma or mx:
continue
lines.append(line)
ulimit.close()

lines.append(SOFT_NOFILE)
lines.append(HAND_NOFILE)
lines.append(SOFT_NPROC)
lines.append(HAND_NPROC)

ulimit = open(LIMIT_CONF, 'w')
ulimit.write(''.join(lines))
ulimit.close()

commands.getoutput('ulimit -HSn 1048576')
if not isCentos7():
modify_nproc_ulimit()
writeProfile()

def modify_nproc_ulimit():
lines = []
if os.path.exists(NPROC_LIMIT_CONF):
ulimit = open(NPROC_LIMIT_CONF, 'r')
for line in ulimit:
ma = re.match(r'.*?soft *?', line, re.IGNORECASE)
if ma:
continue
lines.append(line)
ulimit.close()

lines.append('* soft nproc 1048576\n')
lines.append('root soft nproc unlimited\n')

ulimit = open(NPROC_LIMIT_CONF, 'w')
ulimit.write(''.join(lines))
ulimit.close()

def writeProfile():
lines = []
flag = False
profile = open(PROFILE_CONF, 'r')
for line in profile:
ma = re.match(r'.*?ulimit -HSn 1048576.*', line, re.IGNORECASE)
if ma is not None:
flag = True
lines.append(line)
profile.close()
if flag == False:
lines.append(ULIMIT_NOFILE)
profile = open(PROFILE_CONF, 'w')
profile.write(''.join(lines))
profile.close()

def isCentos7():
mage = commands.getoutput('cat /etc/redhat-release').split('\n')
#CentOS Linux release 7.1.1503 (Core)
#CentOS release 6.6 (Final)
cP = re.compile(r'.*\s+(?P\d+).*', re.IGNORECASE)
for mess in mage:
ma = cP.match(mess)
if ma is not None:
ip = ma.group('release')
if ip == '7':
return True
return False
pass

if __name__ == '__main__':
modify_ulimit()

Share

【“脏牛(Dirty Cow)”漏洞】CVE-2016-5195:Linux 内核本地提权漏洞 通告及修复

漏洞编号:CVE-2016-5195

漏洞名称:脏牛(Dirty COW)

风险等级:高危

漏洞危害:

黑客可以通过远程入侵获取低权限用户后,在服务器本次利用该漏洞在全版本Linux系统上实现本地提权,从而获取到服务器root权限。

漏洞利用条件:

黑客可以通过远程入侵获取低权限用户后,才能进一步在操作系统本地利用该漏洞。

漏洞影响范围

  1. Linux Kernel >= 2.6.22 的所有 Linux 系统

    意味着从 2007 年发布 2.6.22 版本开始,直到2016年10月18日为止,这中间发行的所有 Linux 系统都受影响。

    我们建议您使用以下方式自查是否存在此漏洞:

    • 使用安骑士“安全基线检查 – 高危漏洞应急检查 ”功能自动检查,修复漏洞后,可以自动验证修复是否成功:

      漏洞修复验证:

    • 使用uname –a查看 Linux 系统的内核版本,如:

      Linux AYxxxx 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

      上述内核版本2.6.32-431.23.3.el6.x86_64受漏洞影响。

      Linux AYxxxx 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

      上述内核版本2.6.18-308.el5不受漏洞影响。

  2. 阿里云安全团队在第一时间针对 ECS 提供的 Linux 操作系统镜像进行测试,详细的受影响范围如下表:

漏洞修复方案

因为涉及到操作系统内核的升级,我们强烈建议您:正确关闭正在运行的服务,并做好业务数据备份工作。同时创建服务器磁盘快照,避免修复失败造成不可逆的影响。

1.CentOS 5/6/7 系列操作系统

阿里云已经更新了CentOS 5/6/7Aliyun mirror源,可以直接在默认配置下,您可以更新软件列表,随后一键升级内核:

1).检查是否有内核升级包:yum check-update |grep kernel

2).升级内核:yum update kernel

3).确认下新版本的内核或 initrd/initramfs 是否有xen-vbd和virtio_blk驱动:lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk

  • 查看补丁样例:

    #lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'(具体是版本而定,可以到cd /boot/ 目录下面查看对应的initrd文件(Centos5.1)或initramfs文件(centos6/7))

    # lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep  -i -E 'xen-blkfront|virtio_blk'-rwxr--r--1 root     root        23448Nov414:51 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko-rwxr--r--1 root     root        54888Nov414:51 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-blkfront.ko

4).如果有,则可以重启

5).如果没有,则需要给initrd/initramfs安装驱动,然后执行第三步后重启:

  • centos 5:

    #mkinitrd -f --allow-missing \--with=xen-vbd  --preload=xen-vbd \--with=xen-platform-pci --preload=xen-platform-pci \--with=virtio_blk --preload=virtio_blk \--with=virtio_pci --preload=virtio_pci \--with=virtio_console --preload=virtio_console \--with=hvc_console --preload=hvc_console \$target_initrd $vmlinuz

    (具体是版本而定,可以到cd /boot/ 目录下面查看,替换$target_initrd $vmlinuz)

  • centos 6、7 :

#mkinitrd -f --allow-missing \--with=xen-blkfront --preload=xen-blkfront \--with=virtio_blk --preload=virtio_blk \--with=virtio_pci --preload=virtio_pci \--with=virtio_console --preload=virtio_console \$target_initrd $vmlinuz

安装驱动样例(本样例以Centos6.8 64bit为准):

#mkinitrd -f --allow-missing --with=xen-blkfront --preload=xen-blkfront --with=virtio_blk --preload=virtio_blk --with=virtio_pci --preload=virtio_pci --with=virtio_console --preload=virtio_console initramfs-2.6.32-642.6.2.el6.x86_64.img 2.6.32-642.6.2.el6.x86_64

具体是版本而定,可以到cd /boot/ 目录下面查看,替换$target_initrd $vmlinuz

6).执行第三步后,查看是否有驱动,然后重启系统

# lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'-rwxr--r--1 root     root        23448Nov416:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko-rwxr--r--1 root     root        54888Nov416:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-blkfront.ko

7).查看升级后的内核版本:uname -a或者rpm -q --changelog kernel | grep 'CVE-2016-5195',也可以使用云盾安骑士验证 注:更新完毕后可能会安装两个内核,但不影响系统运行。

# uname -aLinux iZ2ze1zpafrqftmdfh0b3cZ 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

或者

#rpm -q --changelog kernel | grep 'CVE-2016-5195'-[mm] close FOLL MAP_PRIVATE race (LarryWoodman)[13851161385117]{CVE-2016-5195}

Ubuntu 系列操作系统

阿里云已经更新了Ubuntu mirror源,可以直接在默认配置下,您可以更新软件列表,随后一键升级内核:

1).查看是否有更新包:dpkg -l | grep linux

2).更新包列表:apt-get updateor apt update

3).升级内核: Ubuntu12.04版本:apt-get install linux-genericUbuntu14.04版本:apt-get upgrade或apt upgrade

4).然后重启系统

5).查看升级后的内核版本:uname -a或者zcat /usr/share/doc/linux-image-3.13.0-101-generic/changelog.Debian.gz | grep -i 'CVE-2016-5195',也可以使用云盾安骑士验证 注:更新完毕后可能会安装两个内核,但不影响系统运行。

# uname -aLinux iZ2ze1zpaXXXXb3cZ 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26

或者

# zcat /usr/share/doc/linux-image-3.13.0-101-generic/changelog.Debian.gz | grep -i 'CVE-2016-5195'* CVE-2016-5195

3.Debian 系列操作系统

阿里云已经更新了Ubuntu mirror源,可以直接在默认配置下,您可以更新软件列表,随后一键升级内核:

1).查看是否有更新包:dpkg -l | grep linux

2).更新包列表:apt-get update

3).升级内核:apt-get upgrade

4).然后重启系统

5).查看升级后的内核版本:uname -a或者zcat /usr/share/doc/linux-image-3.16.0-4-amd64/changelog.Debian.gz | grep -i 'CVE-2016-5195',也可以使用云盾安骑士验证 注:更新完毕后可能会安装两个内核,但不影响系统运行。

# uname -aLinux iZ2ze1zpaXXXXb3cZ 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

或者

# zcat /usr/share/doc/linux-image-3.16.0-4-amd64/changelog.Debian.gz |grep -i 'CVE-2016-5195'(CVE-2016-5195)

4.SUSE Linux Enterprise Server 系列操作系统(仅限购买SLES企业服务用户

1).使用http://mirrors.aliyuncs.com/SLES/SLES12-SP1-Updates/sle-12-x86_64/ 源进行更新,您可以编辑vim /etc/zypp/repos.d/SLES12-SP1-Updates.repo关闭其他更新源,即:修改http://mirrors.aliyun.com/SLES/SLES12-SP1-Updates/sle-12-x86_64/ enabled=0,然后更新列表:zypper refresh

2).安装最新内核:zypper install kernel-default xen-kmp-default

3).确认下新版本的内核或 initrd / initramfs 是否有xen-vbd和virtio_blk驱动:lsinitrd /boot/initrd-3.12.62-60.64.8-default | grep -i -E 'xen-vbd|virtio_blk'

  • 查看补丁样例:

    lsinitrd /boot/initrd-3.12.62-60.64.8-default | grep -i -E 'xen-vbd|virtio_blk'

    Arguments:--logfile --force --force-drivers 'xen-vbd xen-vnif xen-platform-pci.ko virtio virtio_console virtio_net virtio_blk virtio_pci'-rw-r--r--1 root     root        55335Sep2315:55 lib/modules/3.12.62-60.62-default/updates/blkfront/xen-vbd.ko-rw-r--r--1 root     root        31591Oct1904:40 lib/modules/3.12.62-60.64.8-default/kernel/drivers/block/virtio_blk.kolrwxrwxrwx   1 root     root           61Nov714:17 lib/modules/3.12.62-60.64.8-default/weak-updates/updates/blkfront/xen-vbd.ko ->../../../../3.12.62-60.62-default/updates/blkfront/xen-vbd.ko

4).如果有,可以重启

5).如果没有,则需要给 initrd / initramfs 安装驱动,然后执行第三步后重启:mkinitrd -k /boot/vmlinuz-3.12.62-60.64.8-default -i /boot/initrd-3.12.62-60.64.8-default(具体版本根据实际安装为准) 6).查看升级后的内核版本:uname -a或者rpm -q --changelog kernel | grep 'CVE-2016-5195',也可以使用云盾安骑士验证 注:更新完毕后可能会安装两个内核,但不影响系统运行。

# uname -aLinux iZwz9cl4i8oy1pmjw7g4rxZ 3.12.62-60.64.8-default #1 SMP Tue Oct 18 12:21:38 UTC 2016 (42e0a66) x86_64 x86_64 x86_64 GNU/Linux

或者

# rpm -q --changelog kernel-default | grep 'CVE-2016-5195'- patches.fixes/mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user_pages.patch:(bnc1004418, CVE-2016-5195).

5.Open SUSE 系列操作系统

1).更新列表:zypper refresh

2).安装最新内核:zypper install kernel-default xen-kmp-default

3).确认下新版本的内核或 initrd / initramfs 是否有xen-vbd和virtio_blk驱动lsinitrd /boot/initrd-3.12.62-55-default | grep -i -E 'xen-vbd|virtio_blk'

  • 样例:

    # lsinitrd /boot/initrd-3.12.62-55-default | grep -i -E 'xen-vbd|virtio_blk'

    lib/modules/3.12.62-55-default/kernel/drivers/block/virtio_blk.ko

    lib/modules/3.12.62-55-default/updates/blkfront/xen-vbd.ko

4).如果有,可以重启

5).如果没有,则需要给 initrd / initramfs 安装驱动,然后执行第三步后重启:# mkinitrd -k /boot/vmlinuz-3.12.62-55-default -i /boot/initrd-3.12.62-55-default(具体版本根据实际安装为准)

6).查看升级后的内核版本:uname -a或者rpm -q --changelog kernel | grep 'CVE-2016-5195',也可以使用云盾安骑士验证 注:更新完毕后可能会安装两个内核,但不影响系统运行。

# uname -aLinux iZwz9XXXshamswbvrZ 3.12.62-55-default #1 SMP Thu Oct 20 08:47:11 UTC 2016 (b0aa9a6) x86_64 x86_64 x86_64 GNU/Linux

或者

# rpm -q --changelog kernel-default | grep 'CVE-2016-5195'- patches.fixes/mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user_pages.patch:(bnc1004418, CVE-2016-5195).

6.CoreOS 系列操作系统

安装所有可用更新,包括新内核:

update_engine_client -update重启机器

7.重要提示

  • 1). 对于阿里云官方发布的其余系列的操作系统,Linux 官方正在研发漏洞对应的系统补丁,待补丁发布后,将系统更新到最新版本即可修复漏洞。

  • 2). 对于自定义镜像用户可以关注操作系统原厂商更新状态,自己根据自身业务判断升级内核,修复该漏洞。

参考资料

最后更新时间:2016.11.03 13:01

Share

学习Linux,Shell

学习Linux,Shell

TECHlinuxshellposts

Shell技巧

  • 识别当前运行的是哪种shell
1.$ echo $0
2.-zsh

终端里删字符

  • backspace
  • delete
  • ctrl+h
  • ctrl+w 删除一个单词
  • ctrl+u 删除行

搜索命令

1.$ apropos keyword

识别文件内容

1.$ file 100k.jpg
2.100k.jpg: JPEG image data, JFIF standard 1.02
Share

wndr4300 刷openwrt 科学上网

刷机 基础配置

参考文件入口
需要的刷机文件@百度网盘

shadowsocks-spec

chinadns-openwrt

luci-app-shadowsocks

luci-app-chinadns

初始安装软件

@win

<br />C:\Users\seven\Documents\wdnr4300>pscp.exe *.ipk root@192.168.1.1:/opt/
2015/07/23 14:38 27,161 ChinaDNS_1.3.1-1_ar71xx.ipk
2015/07/23 14:38 2,592 luci-app-chinadns_1.3.1-1_all.ipk
2015/07/23 14:38 3,131 luci-app-shadowsocks-spec_1.3.2-1_all.ipk
2015/07/23 14:38 117,469 shadowsocks-libev-spec_2.2.2-1_ar71xx.ipk

@4300

# opkg install ip ipset libopenssl resolveip iptables-mod-tproxy

# cd /opt
# opkg install ./*.ipk

问题:

C:\Users\seven\Documents\wdnr4300>pscp.exe *.ipk root@192.168.1.1:/opt/
root@192.168.1.1's password:
ash: /usr/libexec/sftp-server: not found
Fatal: Received unexpected end-of-file from server

解决:

# opkg update
# opkg install openssh-sftp-server

修改4300 LAN IP 192.168.7.1

DNS

#vim /etc/config/sec_resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 114.114.114.114

无线和有线设置

忽略了,直接在web界面设置就好主要是设密码什么的

pdnsd搭建DNS服务器@centos 服务器

从 http://members.home.nl/p.a.rombouts/pdnsd/dl.html 下载pdnsd最新的rpm包

然后 yum localinstall pdnsd-x.x.x-par_sl6.x86_64.rpm

配置见:
https://cokebar.info/archives/720
http://leeraw.com/?p=3621

搭建shadowsocks服务@centos 服务器

  1. 先安装git
  2. 从github上拉源码 https://github.com/shadowsocks/shadowsocks-libev
  3. cd shadowsocks-libev
  4. ./configure
  5. make && make install
  6. 启动
    > nohup /usr/local/bin/ss-server -s SERVER_IP -p SERVER_PORT -k PASSWD -m aes-256-cfb &
    > 将上面的启动命令加到rc.local开机自启
  7. 配置

进阶

https://cokebar.info/archives/850

交换机截图

chinaDNS

shadowsocks

dhcp-dns

dncp-dns

Share

tz

Standard Offset Canonical ID Aliases
-12:00 Etc/GMT+12
-11:00 Etc/GMT+11
-11:00 Pacific/Apia
-11:00 Pacific/Midway
-11:00 Pacific/Niue
-11:00 Pacific/Pago_Pago Pacific/Samoa, US/Samoa
-10:00 America/Adak America/Atka, US/Aleutian
-10:00 Etc/GMT+10
-10:00 HST
-10:00 Pacific/Fakaofo
-10:00 Pacific/Honolulu US/Hawaii
-10:00 Pacific/Johnston
-10:00 Pacific/Rarotonga
-10:00 Pacific/Tahiti
-09:30 Pacific/Marquesas
-09:00 America/Anchorage US/Alaska
-09:00 America/Juneau
-09:00 America/Nome
-09:00 America/Yakutat
-09:00 Etc/GMT+9
-09:00 Pacific/Gambier
-08:00 America/Dawson
-08:00 America/Los_Angeles US/Pacific, US/Pacific-New
-08:00 America/Santa_Isabel
-08:00 America/Tijuana America/Ensenada, Mexico/BajaNorte
-08:00 America/Vancouver Canada/Pacific
-08:00 America/Whitehorse Canada/Yukon
-08:00 Etc/GMT+8
-08:00 PST8PDT
-08:00 Pacific/Pitcairn
-07:00 America/Boise
-07:00 America/Cambridge_Bay
-07:00 America/Chihuahua
-07:00 America/Dawson_Creek
-07:00 America/Denver America/Shiprock, Navajo, US/Mountain
-07:00 America/Edmonton Canada/Mountain
-07:00 America/Hermosillo
-07:00 America/Inuvik
-07:00 America/Mazatlan Mexico/BajaSur
-07:00 America/Ojinaga
-07:00 America/Phoenix US/Arizona
-07:00 America/Yellowknife
-07:00 Etc/GMT+7
-07:00 MST
-07:00 MST7MDT
-06:00 America/Bahia_Banderas
-06:00 America/Belize
-06:00 America/Cancun
-06:00 America/Chicago US/Central
-06:00 America/Costa_Rica
-06:00 America/El_Salvador
-06:00 America/Guatemala
-06:00 America/Indiana/Knox America/Knox_IN, US/Indiana-Starke
-06:00 America/Indiana/Tell_City
-06:00 America/Managua
-06:00 America/Matamoros
-06:00 America/Menominee
-06:00 America/Merida
-06:00 America/Mexico_City Mexico/General
-06:00 America/Monterrey
-06:00 America/North_Dakota/Center
-06:00 America/North_Dakota/New_Salem
-06:00 America/Rainy_River
-06:00 America/Rankin_Inlet
-06:00 America/Regina Canada/East-Saskatchewan, Canada/Saskatchewan
-06:00 America/Swift_Current
-06:00 America/Tegucigalpa
-06:00 America/Winnipeg Canada/Central
-06:00 CST6CDT
-06:00 Etc/GMT+6
-06:00 Pacific/Easter Chile/EasterIsland
-06:00 Pacific/Galapagos
-05:00 America/Atikokan America/Coral_Harbour
-05:00 America/Bogota
-05:00 America/Cayman
-05:00 America/Detroit US/Michigan
-05:00 America/Grand_Turk
-05:00 America/Guayaquil
-05:00 America/Havana Cuba
-05:00 America/Indiana/Indianapolis America/Fort_Wayne, America/Indianapolis, US/East-Indiana
-05:00 America/Indiana/Marengo
-05:00 America/Indiana/Petersburg
-05:00 America/Indiana/Vevay
-05:00 America/Indiana/Vincennes
-05:00 America/Indiana/Winamac
-05:00 America/Iqaluit
-05:00 America/Jamaica Jamaica
-05:00 America/Kentucky/Louisville America/Louisville
-05:00 America/Kentucky/Monticello
-05:00 America/Lima
-05:00 America/Montreal
-05:00 America/Nassau
-05:00 America/New_York US/Eastern
-05:00 America/Nipigon
-05:00 America/Panama
-05:00 America/Pangnirtung
-05:00 America/Port-au-Prince
-05:00 America/Resolute
-05:00 America/Thunder_Bay
-05:00 America/Toronto Canada/Eastern
-05:00 EST
-05:00 EST5EDT
-05:00 Etc/GMT+5
-04:30 America/Caracas
-04:00 America/Anguilla
-04:00 America/Antigua
-03:00 America/Argentina/San_Luis
-04:00 America/Aruba
-04:00 America/Asuncion
-04:00 America/Barbados
-04:00 America/Blanc-Sablon
-04:00 America/Boa_Vista
-04:00 America/Campo_Grande
-04:00 America/Cuiaba
-04:00 America/Curacao
-04:00 America/Dominica
-04:00 America/Eirunepe
-04:00 America/Glace_Bay
-04:00 America/Goose_Bay
-04:00 America/Grenada
-04:00 America/Guadeloupe America/Marigot, America/St_Barthelemy
-04:00 America/Guyana
-04:00 America/Halifax Canada/Atlantic
-04:00 America/La_Paz
-04:00 America/Manaus Brazil/West
-04:00 America/Martinique
-04:00 America/Moncton
-04:00 America/Montserrat
-04:00 America/Port_of_Spain
-04:00 America/Porto_Velho
-04:00 America/Puerto_Rico
-04:00 America/Rio_Branco America/Porto_Acre, Brazil/Acre
-04:00 America/Santiago Chile/Continental
-04:00 America/Santo_Domingo
-04:00 America/St_Kitts
-04:00 America/St_Lucia
-04:00 America/St_Thomas America/Virgin
-04:00 America/St_Vincent
-04:00 America/Thule
-04:00 America/Tortola
-04:00 Antarctica/Palmer
-04:00 Atlantic/Bermuda
-04:00 Atlantic/Stanley
-04:00 Etc/GMT+4
-03:30 America/St_Johns Canada/Newfoundland
-03:00 America/Araguaina
-03:00 America/Argentina/Buenos_Aires America/Buenos_Aires
-03:00 America/Argentina/Catamarca America/Argentina/ComodRivadavia, America/Catamarca
-03:00 America/Argentina/Cordoba America/Cordoba, America/Rosario
-03:00 America/Argentina/Jujuy America/Jujuy
-03:00 America/Argentina/La_Rioja
-03:00 America/Argentina/Mendoza America/Mendoza
-03:00 America/Argentina/Rio_Gallegos
-03:00 America/Argentina/Salta
-03:00 America/Argentina/San_Juan
-03:00 America/Argentina/Tucuman
-03:00 America/Argentina/Ushuaia
-03:00 America/Bahia
-03:00 America/Belem
-03:00 America/Cayenne
-03:00 America/Fortaleza
-03:00 America/Godthab
-03:00 America/Maceio
-03:00 America/Miquelon
-03:00 America/Montevideo
-03:00 America/Paramaribo
-03:00 America/Recife
-03:00 America/Santarem
-03:00 America/Sao_Paulo Brazil/East
-03:00 Antarctica/Rothera
-03:00 Etc/GMT+3
-02:00 America/Noronha Brazil/DeNoronha
-02:00 Atlantic/South_Georgia
-02:00 Etc/GMT+2
-01:00 America/Scoresbysund
-01:00 Atlantic/Azores
-01:00 Atlantic/Cape_Verde
-01:00 Etc/GMT+1
+00:00 Africa/Abidjan
+00:00 Africa/Accra
+00:00 Africa/Bamako Africa/Timbuktu
+00:00 Africa/Banjul
+00:00 Africa/Bissau
+00:00 Africa/Casablanca
+00:00 Africa/Conakry
+00:00 Africa/Dakar
+00:00 Africa/El_Aaiun
+00:00 Africa/Freetown
+00:00 Africa/Lome
+00:00 Africa/Monrovia
+00:00 Africa/Nouakchott
+00:00 Africa/Ouagadougou
+00:00 Africa/Sao_Tome
+00:00 America/Danmarkshavn
+00:00 Atlantic/Canary
+00:00 Atlantic/Faroe Atlantic/Faeroe
+00:00 Atlantic/Madeira
+00:00 Atlantic/Reykjavik Iceland
+00:00 Atlantic/St_Helena
+00:00 Etc/GMT Etc/GMT+0, Etc/GMT-0, Etc/GMT0, Etc/Greenwich, GMT, GMT+0, GMT-0, GMT0, Greenwich
+00:00 Etc/UCT UCT
+00:00 Etc/UTC Etc/Universal, Etc/Zulu, Universal, Zulu
+00:00 Europe/Dublin Eire
+00:00 Europe/Lisbon Portugal
+00:00 Europe/London Europe/Belfast, Europe/Guernsey, Europe/Isle_of_Man, Europe/Jersey, GB, GB-Eire
+00:00 UTC
+00:00 WET
+01:00 Africa/Algiers
+01:00 Africa/Bangui
+01:00 Africa/Brazzaville
+01:00 Africa/Ceuta
+01:00 Africa/Douala
+01:00 Africa/Kinshasa
+01:00 Africa/Lagos
+01:00 Africa/Libreville
+01:00 Africa/Luanda
+01:00 Africa/Malabo
+01:00 Africa/Ndjamena
+01:00 Africa/Niamey
+01:00 Africa/Porto-Novo
+01:00 Africa/Tunis
+01:00 Africa/Windhoek
+01:00 CET
+01:00 Etc/GMT-1
+01:00 Europe/Amsterdam
+01:00 Europe/Andorra
+01:00 Europe/Belgrade Europe/Ljubljana, Europe/Podgorica, Europe/Sarajevo, Europe/Skopje, Europe/Zagreb
+01:00 Europe/Berlin
+01:00 Europe/Brussels
+01:00 Europe/Budapest
+01:00 Europe/Copenhagen
+01:00 Europe/Gibraltar
+01:00 Europe/Luxembourg
+01:00 Europe/Madrid
+01:00 Europe/Malta
+01:00 Europe/Monaco
+01:00 Europe/Oslo Arctic/Longyearbyen, Atlantic/Jan_Mayen
+01:00 Europe/Paris
+01:00 Europe/Prague Europe/Bratislava
+01:00 Europe/Rome Europe/San_Marino, Europe/Vatican
+01:00 Europe/Stockholm
+01:00 Europe/Tirane
+01:00 Europe/Vaduz
+01:00 Europe/Vienna
+01:00 Europe/Warsaw Poland
+01:00 Europe/Zurich
+01:00 MET
+02:00 Africa/Blantyre
+02:00 Africa/Bujumbura
+02:00 Africa/Cairo Egypt
+02:00 Africa/Gaborone
+02:00 Africa/Harare
+02:00 Africa/Johannesburg
+02:00 Africa/Kigali
+02:00 Africa/Lubumbashi
+02:00 Africa/Lusaka
+02:00 Africa/Maputo
+02:00 Africa/Maseru
+02:00 Africa/Mbabane
+02:00 Africa/Tripoli Libya
+02:00 Asia/Amman
+02:00 Asia/Beirut
+02:00 Asia/Damascus
+02:00 Asia/Gaza
+02:00 Asia/Jerusalem Asia/Tel_Aviv, Israel
+02:00 Asia/Nicosia Europe/Nicosia
+02:00 EET
+02:00 Etc/GMT-2
+02:00 Europe/Athens
+02:00 Europe/Bucharest
+02:00 Europe/Chisinau Europe/Tiraspol
+02:00 Europe/Helsinki Europe/Mariehamn
+02:00 Europe/Istanbul Asia/Istanbul, Turkey
+02:00 Europe/Kaliningrad
+02:00 Europe/Kiev
+02:00 Europe/Minsk
+02:00 Europe/Riga
+02:00 Europe/Simferopol
+02:00 Europe/Sofia
+02:00 Europe/Tallinn
+02:00 Europe/Uzhgorod
+02:00 Europe/Vilnius
+02:00 Europe/Zaporozhye
+03:00 Africa/Addis_Ababa
+03:00 Africa/Asmara Africa/Asmera
+03:00 Africa/Dar_es_Salaam
+03:00 Africa/Djibouti
+03:00 Africa/Kampala
+03:00 Africa/Khartoum
+03:00 Africa/Mogadishu
+03:00 Africa/Nairobi
+03:00 Antarctica/Syowa
+03:00 Asia/Aden
+03:00 Asia/Baghdad
+03:00 Asia/Bahrain
+03:00 Asia/Kuwait
+03:00 Asia/Qatar
+03:00 Asia/Riyadh
+03:00 Etc/GMT-3
+03:00 Europe/Moscow W-SU
+03:00 Europe/Samara
+03:00 Europe/Volgograd
+03:00 Indian/Antananarivo
+03:00 Indian/Comoro
+03:00 Indian/Mayotte
+03:30 Asia/Tehran Iran
+04:00 Asia/Baku
+04:00 Asia/Dubai
+04:00 Asia/Muscat
+04:00 Asia/Tbilisi
+04:00 Asia/Yerevan
+04:00 Etc/GMT-4
+04:00 Indian/Mahe
+04:00 Indian/Mauritius
+04:00 Indian/Reunion
+04:30 Asia/Kabul
+05:00 Antarctica/Mawson
+05:00 Asia/Aqtau
+05:00 Asia/Aqtobe
+05:00 Asia/Ashgabat Asia/Ashkhabad
+05:00 Asia/Dushanbe
+05:00 Asia/Karachi
+05:00 Asia/Oral
+05:00 Asia/Samarkand
+05:00 Asia/Tashkent
+05:00 Asia/Yekaterinburg
+05:00 Etc/GMT-5
+05:00 Indian/Kerguelen
+05:00 Indian/Maldives
+05:30 Asia/Colombo
+05:30 Asia/Kolkata Asia/Calcutta
+05:45 Asia/Kathmandu Asia/Katmandu
+06:00 Antarctica/Vostok
+06:00 Asia/Almaty
+06:00 Asia/Bishkek
+06:00 Asia/Dhaka Asia/Dacca
+06:00 Asia/Novokuznetsk
+06:00 Asia/Novosibirsk
+06:00 Asia/Omsk
+06:00 Asia/Qyzylorda
+06:00 Asia/Thimphu Asia/Thimbu
+06:00 Etc/GMT-6
+06:00 Indian/Chagos
+06:30 Asia/Rangoon
+06:30 Indian/Cocos
+07:00 Antarctica/Davis
+07:00 Asia/Bangkok
+07:00 Asia/Ho_Chi_Minh Asia/Saigon
+07:00 Asia/Hovd
+07:00 Asia/Jakarta
+07:00 Asia/Krasnoyarsk
+07:00 Asia/Phnom_Penh
+07:00 Asia/Pontianak
+07:00 Asia/Vientiane
+07:00 Etc/GMT-7
+07:00 Indian/Christmas
+08:00 Antarctica/Casey
+08:00 Asia/Brunei
+08:00 Asia/Choibalsan
+08:00 Asia/Chongqing Asia/Chungking
+08:00 Asia/Harbin
+08:00 Asia/Hong_Kong Hongkong
+08:00 Asia/Irkutsk
+08:00 Asia/Kashgar
+08:00 Asia/Kuala_Lumpur
+08:00 Asia/Kuching
+08:00 Asia/Macau Asia/Macao
+08:00 Asia/Makassar Asia/Ujung_Pandang
+08:00 Asia/Manila
+08:00 Asia/Shanghai PRC
+08:00 Asia/Singapore Singapore
+08:00 Asia/Taipei ROC
+08:00 Asia/Ulaanbaatar Asia/Ulan_Bator
+08:00 Asia/Urumqi
+08:00 Australia/Perth Australia/West
+08:00 Etc/GMT-8
+08:45 Australia/Eucla
+09:00 Asia/Dili
+09:00 Asia/Jayapura
+09:00 Asia/Pyongyang
+09:00 Asia/Seoul ROK
+09:00 Asia/Tokyo Japan
+09:00 Asia/Yakutsk
+09:00 Etc/GMT-9
+09:00 Pacific/Palau
+09:30 Australia/Adelaide Australia/South
+09:30 Australia/Broken_Hill Australia/Yancowinna
+09:30 Australia/Darwin Australia/North
+10:00 Antarctica/DumontDUrville
+10:00 Asia/Sakhalin
+10:00 Asia/Vladivostok
+10:00 Australia/Brisbane Australia/Queensland
+10:00 Australia/Currie
+10:00 Australia/Hobart Australia/Tasmania
+10:00 Australia/Lindeman
+10:00 Australia/Melbourne Australia/Victoria
+10:00 Australia/Sydney Australia/ACT, Australia/Canberra, Australia/NSW
+10:00 Etc/GMT-10
+10:00 Pacific/Chuuk Pacific/Truk, Pacific/Yap
+10:00 Pacific/Guam
+10:00 Pacific/Port_Moresby
+10:00 Pacific/Saipan
+10:30 Australia/Lord_Howe Australia/LHI
+11:00 Antarctica/Macquarie
+11:00 Asia/Anadyr
+11:00 Asia/Kamchatka
+11:00 Asia/Magadan
+11:00 Etc/GMT-11
+11:00 Pacific/Efate
+11:00 Pacific/Guadalcanal
+11:00 Pacific/Kosrae
+11:00 Pacific/Noumea
+11:00 Pacific/Pohnpei Pacific/Ponape
+11:30 Pacific/Norfolk
+12:00 Antarctica/McMurdo Antarctica/South_Pole
+12:00 Etc/GMT-12
+12:00 Pacific/Auckland NZ
+12:00 Pacific/Fiji
+12:00 Pacific/Funafuti
+12:00 Pacific/Kwajalein Kwajalein
+12:00 Pacific/Majuro
+12:00 Pacific/Nauru
+12:00 Pacific/Tarawa
+12:00 Pacific/Wake
+12:00 Pacific/Wallis
+12:45 Pacific/Chatham NZ-CHAT
+13:00 Etc/GMT-13
+13:00 Pacific/Enderbury
+13:00 Pacific/Tongatapu
+14:00 Etc/GMT-14
+14:00 Pacific/Kiritimati
Share