哪个可能更可靠(更安全的数据 + 更少的停机时间):
在 RAID 1 中有 4 个驱动器或在 RAID 1 中有 2 个驱动器加上 2 个备用?
换句话说,当您使用 4 个驱动器设置 RAID 1 时,拥有备件是否有优势?
背景:这是对当前稳定的 Linux 发行版的 MDADM 突袭。磁盘是企业级的。RAID 1 中的分区是根分区(最少写入),因此写入性能不是问题。硬件允许热插拔 HDD。在相同 4 个 HDD 的另一个分区上,我为写入密集型应用程序运行了 RAID 10。
哪个可能更可靠(更安全的数据 + 更少的停机时间):
在 RAID 1 中有 4 个驱动器或在 RAID 1 中有 2 个驱动器加上 2 个备用?
换句话说,当您使用 4 个驱动器设置 RAID 1 时,拥有备件是否有优势?
背景:这是对当前稳定的 Linux 发行版的 MDADM 突袭。磁盘是企业级的。RAID 1 中的分区是根分区(最少写入),因此写入性能不是问题。硬件允许热插拔 HDD。在相同 4 个 HDD 的另一个分区上,我为写入密集型应用程序运行了 RAID 10。
带有内核 4.4 的 Ubuntu 16.04.5 曾经按预期工作:IPv4 是默认设置。由于更改为内核 (hwe) 4.15,它默认使用 IPv6。
它通过 Tunnelbroker 提供 IPv6,由路由器广播。
现在默认为 IPv6:curl ifconfig.co
返回机器的 IPv6。仅curl -4 ifconfig.co
返回所需的 IPv4 地址。(curl -6 ifconfig.co
如预期返回 IPv6)
$ ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
$ ip -6 rule list
0: from all lookup local
32766: from all lookup main
$ ip route list
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.x
$ ip -6 route list
2001:470:x:999::9999:f6a dev eth0 proto kernel metric 256 pref medium
2001:470:x:999::/64 dev eth0 proto kernel metric 256 expires 42905sec pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::2ac6:8eff:fe65:d117 dev eth0 proto ra metric 1024 expires 1505sec hoplimit 64 pref medium
PS:一些提供商仍然报告 IPv4,例如curl ipinfo.io/ip
。我已经使用 ifconfig.co 很长时间了,所以我不确定他们是否更改了设置(不太可能)或者内核升级使 Ubuntu 更喜欢 IPv6。
如何找出导致首选 IPv6 的原因?
在此处描述的场景中,我最终在客户端中使用了此配置(端点 WG 服务器有两个公共 IP)
[Interface]
Address = <ip_to_use>/32
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[Peer]
PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
AllowedIPs = 0.0.0.0/0
Endpoint = <wg_server_ip>:51820
PersistentKeepalive = 10
现在我想从 Wireguard 隧道中排除来自用户的所有进程或所有数据包(往返)某些端口。
我注意到这可以使用 WG 自己设置的 fwmark 来完成,我不需要使用其他标记,如建议的here。
这是 Ubuntu 16.04 上的 IPtables 1.6。如何使用 wg-quick 创建的标记从 WG 隧道中排除每个用户或每个端口?
在 Ubuntu 16.04 上,IPv4 的默认路由是 eth0 以外的接口。
如果我尝试
curl -vvv --interface eth0 v4.ifconfig.co
我明白了
* SO_BINDTODEVICE eth0 failed with errno 1: Operation not permitted; will do regular bind
但如果我sudo
工作得很好。
如何更改配置,以便在此非特权用户下运行的服务可以将 eth0 用于 IPv4?我不认为我可以更改 sudo 配置以允许这样做,因为我不希望该服务以 root 身份运行任何东西。我还想在当前接口上维护 IPv4 的默认路由。
我正在尝试设置一个 Wireguard 隧道,以便 A 将 B 的 IP 用于出站和入站流量(如代理,而不是标准 VPN 配置)。两个盒子都是 Ubuntu 16.04。
A 是 eth0,位于具有 NAT 和 DMZ 的路由器后面,具有 IP A
B 有两个公共 IP:一个主 IP(ens3 aka B1)和一个辅助 IP(ens3:0 aka B2)。第二个应该专用于 WG 隧道。
A上的工作组:
Interface
Address = 10.200.1.2/24
SaveConfig = true
ListenPort = 50614
FwMark = 0xca6c
PrivateKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[Peer]
PublicKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
AllowedIPs = 0.0.0.0/0
Endpoint = <B2>:51820
PersistentKeepalive = 10
B 工作组:
[Interface]
Address = 10.200.1.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
[Peer]
PublicKey = zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
AllowedIPs = 10.200.1.0/24
Endpoint = A:50614
A路线:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
B路线:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 B1.B1.B1.1 0.0.0.0 UG 0 0 0 ens3
B2.B2.B2.0 0.0.0.0 255.255.255.0 U 0 0 0 ens3
B1.B1.B1.0 0.0.0.0 255.255.254.0 U 0 0 0 ens3
169.254.169.254 B1.B1.B1.1 255.255.255.255 UGH 0 0 0 ens3
我需要添加哪条路由,以便来自 A 的每个出站数据包都通过 B2 发出,并且每个入站到 B2 的数据包都发送到 A?
VPS设置如下
名称 MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 只读存储器 vda 253:0 0 60G 0 磁盘 ├─vda1 253:1 0 9.8G 0 部分 / └─vda2 253:2 0 50.2G 0 部分 └─VolGroup1-LogVol1 252:0 0 50.2G 0 lvm /mnt/lvm1 vdb 253:16 0 10G 0 磁盘
磁盘 /dev/vda:60 GiB,64424509440 字节,125829120 个扇区 单位:1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节/512 字节 I/O 大小(最小/最佳):512 字节/512 字节 磁盘标签类型:dos 磁盘标识符:XXXXXXXX . 设备引导开始结束扇区大小 ID 类型 /dev/vda1 * 2048 20482047 20480000 9.8G 83 Linux /dev/vda2 20482048 125829119 105347072 50.2G 83 Linux . 磁盘 /dev/vdb:10 GiB,10737418240 字节,20971520 个扇区 单位:1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节/512 字节 I/O 大小(最小/最佳):512 字节/512 字节 磁盘标签类型:gpt 磁盘标识符:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX . 设备开始结束扇区大小类型 /dev/vdb1 2048 20969471 20967424 10G Linux 文件系统 . 磁盘 /dev/mapper/VolGroup1-LogVol1:50.2 GiB,53934555136 字节,105340928 个扇区 单位:1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节/512 字节 I/O 大小(最小/最佳):512 字节/512 字节
/dev/vdb/ 是最初 10GB 大小的单块存储卷。稍后我将在此块存储中添加更多空间。或者可以添加更多块存储(/dev/vdc、/dev/vdc 等)。
我需要将它挂载到 /mnt/lvm1。使用此文件夹的应用程序将需要更多空间,我不能让它们使用多个文件夹。
保持向单个挂载点添加空间的最佳设置是什么?当然,我可以将VolGroup1-LogVol1扩展到 /dev/vdb1,但是还有其他更容易管理的方法吗?这可以是不同的 PV/VG/LV 设置和/或使用多个块存储的形式。
我制定了以下政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllooUserFullAccessToBucket",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::mybucket/*"
]
}
]
}
通过 Key/Secret(使用 Cloudberry Explorer)访问存储桶时,我可以:
或者
我需要在策略中添加另一个项目以取消存储桶级别权限要求:
{
"Sid": "AllooUserFullAccessToBucketPre",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::mybucket"
]
},
是否存在允许策略中只有 2 个项目(AllowUserToSeeBucketListInTheConsole 和单个 AllooUserFullAccessToBucket)而不需要存储桶级别权限的语法?
在 Ubuntu 16.04.1 上运行:
rsyslogd 8.16.0, compiled with:
PLATFORM: x86_64-pc-linux-gnu
PLATFORM (lsb_release -d):
FEATURE_REGEXP: Yes
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
memory allocator: system default
Runtime Instrumentation (slow code): No
uuid support: Yes
Number of Bits in RainerScript integers: 64
和:
#rsyslogd -N1
rsyslogd: version 8.16.0, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: command 'KLogPermitNonKernelFacility' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.16.0 try http://www.rsyslog.com/e/2222 ]
如果以下配置生效,则在服务停止时挂起:
$ModLoad imfile
##########
# MySQL slow query log (standard log is autosent to syslog):
$InputFileName /var/log/mysql/mysql-slow.log
$InputFileTag mysqld_slow:
$InputFileStateFile state-mysqld_slow
$InputFileSeverity info
$InputRunFileMonitor
##########
# Apache access:
###
$InputFileName /var/log/virtualmin/mysite.com_access_log
$InputFileTag www-access-mysite.com:
$InputFileStateFile state-www-access-mysite.com
$InputFileSeverity info
$InputRunFileMonitor
##########
# Apache Error:
###
$InputFileName /var/log/virtualmin/mysite.com_error_log
$InputFileTag www-errors-mysite.org:
$InputFileStateFile state-www-errors-mysite.com
$InputFileSeverity error
$InputRunFileMonitor
### Main Error Log
$InputFileName /var/log/apache2/error.log
$InputFileTag www-errors-main:
$InputFileStateFile state-www-errors
$InputFileSeverity error
$InputRunFileMonitor
# Setup disk assisted queues
$ActionQueueFileName fwdRule1 # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList # run asynchronously
$ActionResumeRetryCount -1 # infinite retries if host is down
#RsyslogGnuTLS
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/keys/ca.d/certs.crt
###
###First BLOCK
###
template(name="access" type="string" string="<%pri%>%protocol-version% %timestamp:::date-rfc3339% Host1 %app-name% %procid% %msgid% [id@40000 tag=\"access\"] %msg%\n")
template(name="errors" type="string" string="<%pri%>%protocol-version% %timestamp:::date-rfc3339% Host1 %app-name% %procid% %msgid% [id@40000 tag=\"errors\"] %msg%\n")
# Send messages over TCP using the template.
:syslogtag, startswith, "www-access" action(type="omfwd" protocol="tcp" target="logs.com" port="6000" template="access" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.com")
:syslogtag, startswith, "www-error" action(type="omfwd" protocol="tcp" target="logs.com" port="6000" template="errors" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logs.com")
###
###Second BLOCK
###
template(name="standard" type="string" string="<%pri%>%protocol-version% %timestamp:::date-rfc3339% Host1 %app-name% %procid% %msgid% %msg%\n")
# Send messages over TCP using the template.
:syslogtag, startswith, "www-access" action(type="omfwd" protocol="tcp" target="logs.other.com" port="38549" template="standard" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.other.com")
:syslogtag, startswith, "www-errors" action(type="omfwd" protocol="tcp" target="logs.other.com" port="38549" template="standard" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.other.com")
:syslogtag, startswith, "mysqld" action(type="omfwd" protocol="tcp" target="logs.other.com" port="38549" template="standard" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.other.com")
如果通过运行,rsyslogd -dn
您可以看到:
9744.300605710:main thread : main Q: EnqueueMsg advised worker start
9744.300724026:main thread : Terminating main queue... 9744.300734161:main thread : main Q: initiating worker thread shutdown sequence
9744.300739666:main thread : main Q: trying shutdown of regular workers
9744.300766918:main thread : sent SIGTTIN to worker thread 0x9b57a700
9744.300776037:main Q:Reg/w0 : wti 0x16756a0: worker awoke from idle processing
9744.300782296:main Q:Reg/w0 : DeleteProcessedBatch: we deleted 0 objects and enqueued 0 objects
9744.300786960:main Q:Reg/w0 : doDeleteBatch: delete batch from store, new sizes: log 0, phys 0
9744.300791987:main Q:Reg/w0 : regular consumer finished, iret=4, szlog 0 sz phys 0
9744.300797344:main Q:Reg/w0 : wti 0x16756a0: terminating worker terminateRet=5, bInactivityTOOccured=0
9744.300803075:main Q:Reg/w0 : DDDD: wti 0x16756a0: worker cleanup action instances
9744.300807699:main Q:Reg/w0 : wti 0x16756a0, action 0, ptr 0x7f1394004210
9744.300825960:main Q:Reg/w0 : wti 0x16756a0, action 1, ptr 0x7f1394038f80
9744.300835440:main Q:Reg/w0 : wti 0x16756a0, action 2, ptr 0x7f13940022a0
9744.300875784:main Q:Reg/w0 : wti 0x16756a0, action 3, ptr 0x7f1394004470
9744.300885088:main Q:Reg/w0 : wti 0x16756a0, action 4, ptr (nil)
9744.300890048:main Q:Reg/w0 : wti 0x16756a0, action 5, ptr (nil)
9744.300894505:main Q:Reg/w0 : wti 0x16756a0, action 6, ptr (nil)
9744.300898883:main Q:Reg/w0 : wti 0x16756a0, action 7, ptr (nil)
9744.300903665:main Q:Reg/w0 : wti 0x16756a0, action 8, ptr (nil)
9744.300908515:main Q:Reg/w0 : wti 0x16756a0, action 9, ptr (nil)
9744.300912910:main Q:Reg/w0 : wti 0x16756a0, action 10, ptr 0x7f13940023f0
9744.300918720:main Q:Reg/w0 : wti 0x16756a0, action 11, ptr 0x7f13940068f0
9744.300941837:main Q:Reg/w0 : wti 0x16756a0, action 12, ptr 0x7f13940504b0
9744.300951981:main Q:Reg/w0 : wti 0x16756a0, action 13, ptr 0x7f1394462e10
9744.301055305:main thread : main Q:Reg: waiting 1499ms on worker thread termination, 1 still running
9745.800919600:main thread : main Q:Reg: timeout waiting on worker thread termination
9745.800976996:main thread : sent SIGTTIN to worker thread 0x9b57a700
9745.801024045:main thread : main Q: regular shutdown timed out on primary queue (this is OK)
9745.801030518:main thread : main Q: checking to see if we need to cancel any worker threads of the primary queue
9745.801035688:main thread : sent SIGTTIN to worker thread 0x9b57a700, giving it a chance to terminate
9745.811204331:main thread : cooperative worker termination failed, using cancellation...
9745.811246502:main thread : wti 0x16756a0: canceling worker thread
根据支持论坛中此线程中的建议,我已经尝试在关闭防火墙的情况下启动/停止(我没有得到任何帮助)
strace 的尾部显示
6700 14:13:02 write(6, "Oct 6 14:13:02 hostname rsyslogd: [origin software=\"rsyslogd\" swVersion=\"8.16.0\" x-pid=\"6696\" x-info=\"http://www.rsyslog.com\"] exiting on signal 15.\n", 146) = 146
6700 14:13:02 futex(0x1a3516c, FUTEX_WAIT_PRIVATE, 99, NULL <unfinished ...>
6696 14:13:02 <... futex resumed> ) = 1
6696 14:13:02 futex(0x1a3516c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x1a35168, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...>
6700 14:13:02 <... futex resumed> ) = 0
6700 14:13:02 futex(0x1a34f80, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
6696 14:13:02 <... futex resumed> ) = 1
6696 14:13:02 tgkill(6696, 6700, SIGTTIN <unfinished ...>
6700 14:13:02 <... futex resumed> ) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
6700 14:13:02 --- SIGTTIN {si_signo=SIGTTIN, si_code=SI_TKILL, si_pid=6696, si_uid=104} ---
6700 14:13:02 rt_sigreturn({mask=~[KILL STOP TTIN RTMIN RT_1]}) = -1 EINTR (Interrupted system call)
6700 14:13:02 futex(0x1a34f80, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...>
6696 14:13:02 <... tgkill resumed> ) = 0
6696 14:13:02 futex(0x1a34f80, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
6700 14:13:02 <... futex resumed> ) = 0
6700 14:13:02 futex(0x1a34f80, FUTEX_WAKE_PRIVATE, 1) = 0
6700 14:13:02 writev(14, [{"\25\3\3\0\32\0\0\0\0\0\0\1qv\373\273}\275\276\252\207\\~\7\343p\237[\343'\363", 31}], 1) = 31
6700 14:13:02 recvfrom(14, <unfinished ...>
6696 14:13:02 <... futex resumed> ) = 1
6696 14:13:02 futex(0x1a35014, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, {1475763183, 729652779}, ffffffff <unfinished ...>
6700 14:13:02 <... recvfrom resumed> "\25\3\3\0\32", 5, 0, NULL, NULL) = 5
6700 14:13:02 mprotect(0x7fd3145d8000, 16384, PROT_READ|PROT_WRITE) = 0
6700 14:13:02 recvfrom(14, "w_\345'\310\3473\3\\q\32 \37\276\237A\270a\260\200\24\34p\262G\277", 26, 0, NULL, NULL) = 26
6700 14:13:02 close(14) = 0
6700 14:13:02 writev(25, [{"\25\3\3\0\32\0\0\0\0\0\0\1\20\3535\fh\5\324bZ\211U\203AX.\37\205`m", 31}], 1) = 31
6700 14:13:02 recvfrom(25, "\25\3\3\0\32", 5, 0, NULL, NULL) = 5
6700 14:13:02 recvfrom(25, "\307y\343\27z#\31\373\232\333\371\263\275R\203\31\332?)>\201\245\301z\335;", 26, 0, NULL, NULL) = 26
6700 14:13:02 close(25) = 0
6700 14:13:02 writev(24, [{"\25\3\3\0000\26f\310\217\23\247d?\4\3\301\252\277+\207\250q[9L\306\274\2414}\306\237\253X\221\35\27:\376\206\203\36PP\177\363\362I\321\223\372\203W", 53}], 1) = 53
6700 14:13:02 recvfrom(24, <unfinished ...>
6696 14:13:03 <... futex resumed> ) = -1 ETIMEDOUT (Connection timed out)
6696 14:13:03 tgkill(6696, 6700, SIGTTIN) = 0
6700 14:13:03 <... recvfrom resumed> 0x7fd31449c17b, 5, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
6700 14:13:03 --- SIGTTIN {si_signo=SIGTTIN, si_code=SI_TKILL, si_pid=6696, si_uid=104} ---
6700 14:13:03 rt_sigreturn({mask=~[KILL STOP TTIN RTMIN RT_1]}) = -1 EINTR (Interrupted system call)
6700 14:13:03 recvfrom(24, <unfinished ...>
6696 14:13:03 futex(0x1a34fe8, FUTEX_WAKE_PRIVATE, 1) = 0
6696 14:13:03 tgkill(6696, 6700, SIGTTIN) = 0
6700 14:13:03 <... recvfrom resumed> 0x7fd31449c17b, 5, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
6700 14:13:03 --- SIGTTIN {si_signo=SIGTTIN, si_code=SI_TKILL, si_pid=6696, si_uid=104} ---
6700 14:13:03 rt_sigreturn({mask=~[KILL STOP TTIN RTMIN RT_1]}) = -1 EINTR (Interrupted system call)
6700 14:13:03 recvfrom(24, <unfinished ...>
6696 14:13:03 select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout.)
6696 14:13:03 select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout.)
6696 14:13:03 select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout.)
6696 14:13:03 select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout.)
.
.
.
and it repeats until
6696 14:14:32 select(0, NULL, NULL, NULL, 0x7ffe5e77b200 <ptrace(SYSCALL):No such process>
6700 14:14:32 +++ killed by SIGKILL +++
6696 14:14:32 +++ killed by SIGKILL +++
我正在使用 DD-WRT 3.0 路由器通过 openVPN 进行连接。在 LAN 中,192.168.1.50 是一个不应该通过 VPN 的设备。
(如何设置防火墙让 192.168.1.50 不通过 VPN 以及 当 VPN 断开/掉线时如何使所有其他 IP 失去 WAN 连接?)
或者
(创建两个子网,一个通过 VPN(wi-fi 设备),另一个直接(有线设备) , 当 VPN 掉线时让 VPN 子网失去 WAN 连接)
我对这两种设置都没有偏好。什么都容易。
此规则不起作用(对于第一种情况):
iptables -I FORWARD ! -o tun1 -s 192.168.1.50 -j DROP
这是正在使用的路由表,路由器处于网关模式:
对于域 example.com 上的 SSL 证书,一些测试告诉我该链是不完整的,并且由于 Firefox 保留自己的证书存储,它可能在 Mozilla ( 1、2、3 ) 上失败。其他人告诉我这很好,Firefox 36 也一样,它告诉我证书链很好。
更新:我在 Windows XP 和 MacOS X Snow Leopard 上的 Opera、Safari、Chrome 和 IE 上进行了测试,它们都运行良好。它仅在两个操作系统上的 Firefox < 36 上失败。我无法在 Linux 上进行测试,但对于这个网站来说,它的访问者不到 1%,而且大多数可能是机器人。因此,这回答了最初的问题“此设置是否在 Mozilla Firefox 中显示警告”和“此 SSL 证书链是否损坏?”。
因此,问题是如何找出我需要在 ssl.ca 文件中放置哪些证书,以便 Apache 可以为它们提供服务以防止 Firefox < 36 阻塞?
PS:附带说明一下,我用来测试证书的 Firefox 36 是全新安装的。它不可能不抱怨,因为它在之前访问使用相同链的站点期间下载了中间证书。
我有以下文件
[subdomain.rhcloud.com minutely]\> pwd
/var/lib/openshift/username/app-root/repo/.openshift/cron/minutely
[subdomain.rhcloud.com minutely]\> ls -lha
total 4.0K
drwx------. 2 username username 24 Nov 20 21:08 .
drwx------. 3 username username 21 Nov 20 20:46 ..
-rwxr-xr-x. 1 username username 73 Nov 20 20:54 ticktock.sh
[subdomain.rhcloud.com minutely]\> cat ticktock.sh
*/1 * * * * username php ../../../cron/status.cron.php
[subdomain.rhcloud.com minutely]\> php ../../../cron/status.cron.php
[subdomain.rhcloud.com minutely]\>
如图所示,文件内容执行良好。文件权限似乎正确。但Cron 1.4墨盒似乎没有触发 ticktock.sh。
所以我尝试手动调用它:
[subdomain.rhcloud.com minutely]\> ./ticktock.sh
./ticktock.sh: line 1: */1: No such file or directory
它告诉我那里存在的文件不存在。
所以我尝试了php的完整路径,
[subdomain.rhcloud.com minutely]\> /opt/rh/php54/root/usr/bin/php -v
PHP 5.4.16 (cli) (built: Oct 23 2014 05:04:35)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
和 ticktock.sh 成为
[subdomain.rhcloud.com minutely]\> cat ticktock.sh
*/1 * * * * 546e69f54382ec6013000027 /opt/rh/php54/root/usr/bin/php ../../../cron/status.cron.php
但它仍然无法通过 cron 或命令行执行
[subdomain.rhcloud.com minutely]\> ./ticktock.sh
./ticktock.sh: line 1: */1: No such file or directory
我在这里想念什么?!
PS:这是最初发布在这里的问题的第二部分。
我想为特定的虚拟主机完全禁用HSTS 标头。对于这些虚拟主机中的每一个,我(根据建议)在 443 容器中都有一个重定向。它工作正常,但除非绝对必要,否则Apache不建议使用RewriteRule 。是否可以仅使用Redirect而不是 rewrite来执行下面的重定向?
<VirtualHost x.x.x.x:443>
<IfModule mod_headers.c>
Header unset Strict-Transport-Security
Header always set Strict-Transport-Security "max-age=0;includeSubDomains"
</IfModule>
SuexecUserGroup "#520" "#520"
ServerName dev.domain.com
ServerAlias www.dev.domain.com
ServerAlias subdomainjr2b.dev.domain.com
ServerAlias www.subdomainjr2b.dev.domain.com
ServerAlias subdomainblah.dev.domain.com
ServerAlias www.subdomainblah.dev.domain.com
RewriteEngine On
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [redirect=302]
PS1:Domain.com 有一个通配符证书,通配符只对 sub.domain.com 有效,对 sub.sub.domain.com 无效,因此需要为这些虚拟主机禁用 hsts。
PS2:不要问我为什么要Header unset
在我已经使用的时候使用Header always set
。它在实现之前向客户端发送了两个标头,据Header unset
我所知,它不应该。
我阅读了使用带有 Postfix 2.6.6的中继主机。可以为不同的发件人使用具有不同凭据的不同中继主机。但是我如何使用特定发件人的直接递送(在这种情况下,只有一个发件人),而所有其他邮件都通过单个中继主机/凭据(在这种情况下,Sendgrid)发送。
背景:所有邮件都是事务性的,由运行 Postfix 的 LAMP 服务器上不同域上的 Web 应用程序生成。这些域中的任何一个都没有 MX 记录指向该服务器(它们主要是谷歌应用程序)。除一个以外的所有域都成功使用了sendmail>postfix>sendgrid>remote SMTP路由。这个域/应用程序需要直接发送(sendmail>postfix>remote SMTP)以实现更好的传递跟踪。我不想通过SwiftMailer本身使用直接传递,因为它会在应用程序的邮件处理中引入延迟。我希望 SwiftMailer 使用Swift_SendmailTransport
并通过 Postfix 传递,然后我们将梳理 Postfix 日志以查找传递失败。
我通过这种方法在 CentOS 6.5 上安装了两个并行版本的 PHP
[root@host ~]# php -i | grep "PHP Version"
PHP Version => 5.3.3
[root@host ~]# /opt/rh/php54/root/usr/bin/php -i | grep "PHP Version"
PHP Version => 5.4.16
安装来自
[root@host ~]# rpm -q php php-mcrypt
php-5.3.3-27.el6_5.1.x86_64
php-mcrypt-5.3.3-3.el6.x86_64
[root@host ~]# rpm -q php54 php54-mcrypt
php54-1-7.el6.centos.alt.x86_64
package php54-mcrypt is not installed
[root@host ~]# rpm -q libmcrypt
libmcrypt-2.5.8-4.el6.art.x86_64
[root@host ~]# rpm -q libmcrypt-devel
libmcrypt-devel-2.5.8-4.el6.art.x86_64
在运行 PHP 5.3.3 的站点上,mcrypt 工作正常。我需要让运行 5.4.16 的站点可以使用 mcrypt。自然我尝试yum install php54-mcrypt
了,但它返回No package php54-mcrypt available.
。启用了以下存储库:
asl-4.0
base
epel
extras
scl
updates
virtualmin
virtualmin-universal
所以我搜索了一个 RPM,并找到了这个. 但是,如果我尝试安装此 RPM,它会尝试更新当前的 PHP mcrypt,我需要在 5.3.3 上为站点继续运行它。我的印象是 php-mcrypt 需要与 php 版本完全一致,并且不向后兼容。
我需要为 PHP 5.4.16 安装 mcrypt,其中 PHPZTS="" 和 PHPAPI=20100525。我怎样才能做到这一点?
使用 rsyslog v8.2.2,我想对多行消息进行分组,例如 MySQL 慢查询日志输出的消息。
每条新消息都以三个连续的行开头,其中第一个字符为“#”,尽管有些消息只有两行在消息开头有一个“#”。(我怀疑由 PHP cli 而不是标准 PHP 触发的查询不带有 # Time:
标记)。例子:
# Time: 140817 0:59:22
# User@Host: root[root] @ localhost []
# Query_time: 5.864315 Lock_time: 0.000033 Rows_sent: 857715 Rows_examined: 857715
SET timestamp=1408237162;
SELECT /*!40001 SQL_NO_CACHE */ * FROM `sales_flat_quote_shipping_rate`;
# Time: 140817 1:00:06
# User@Host: user2[user2] @ localhost []
# Query_time: 4.070595 Lock_time: 0.000068 Rows_sent: 0 Rows_examined: 1536
use db2;
SET timestamp=1408237206;
DELETE FROM `catalog_product_index_price_idx`;
# User@Host: db3[db3] @ localhost []
# Query_time: 3.892674 Lock_time: 0.046493 Rows_sent: 0 Rows_examined: 659
use db3;
SET timestamp=1408237206;
UPDATE user SET cert = 'yes' WHERE site_id < 10;
# Time: 140817 1:00:06
# User@Host: user2[user2] @ localhost []
# Query_time: 4.070595 Lock_time: 0.000068 Rows_sent: 0 Rows_examined: 1536
use db2;
SET timestamp=1408237206;
DELETE FROM `catalog_product_index_price_idx`;
# User@Host: db3[db3] @ localhost []
# Query_time: 3.892674 Lock_time: 0.046493 Rows_sent: 0 Rows_examined: 659
use db3;
SET timestamp=1408237206;
UPDATE user SET cert = 'yes' WHERE site_id < 10;
如何配置 rsyslog 以将它们作为单个消息发送?
以 root 身份登录到 CentOS 6.5 系统时,我运行
># alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
我想alias ll='ls -l --color=auto'
为alias ll='ls -lha --color=auto'
所有用户修改。cat /etc/bashrc
和cat /root/.bashrc
产量,分别为:
># cat /etc/bashrc
# /etc/bashrc
# System wide functions and aliases
# Environment stuff goes in /etc/profile
# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.
# are we an interactive shell?
if [ "$PS1" ]; then
if [ -z "$PROMPT_COMMAND" ]; then
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
;;
esac
fi
# Turn on checkwinsize
shopt -s checkwinsize
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
# You might want to have e.g. tty in prompt (e.g. more virtual machines)
# and console windows
# If you want to do so, just add e.g.
# if [ "$PS1" ]; then
# PS1="[\u@\h:\l \W]\\$ "
# fi
# to your custom modification shell script in /etc/profile.d/ directory
fi
if ! shopt -q login_shell ; then # We're not a login shell
# Need to redefine pathmunge, it get's undefined at the end of /etc/profile
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
# By default, we want umask to get set. This sets it for non-login shell.
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
# Only display echos from profile.d scripts if we are no login shell
# and interactive - otherwise just process them to set envvars
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
unset i
unset pathmunge
fi
# vim:ts=4:sw=4
和
># cat /root/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
它是 /etc/profile.d/colorls.sh 包含两个引用ll
:
># cat /etc/profile.d/colorls.sh
# color-ls initialization
#when USER_LS_COLORS defined do not override user LS_COLORS, but use them.
if [ -z "$USER_LS_COLORS" ]; then
alias ll='ls -l' 2>/dev/null
alias l.='ls -d .*' 2>/dev/null
# Skip the rest for noninteractive shells.
[ -z "$PS1" ] && return
COLORS=
for colors in "$HOME/.dir_colors.$TERM" "$HOME/.dircolors.$TERM" \
"$HOME/.dir_colors" "$HOME/.dircolors"; do
[ -e "$colors" ] && COLORS="$colors" && break
done
[ -z "$COLORS" ] && [ -e "/etc/DIR_COLORS.256color" ] && \
[ "x`tty -s && tput colors 2>/dev/null`" = "x256" ] && \
COLORS="/etc/DIR_COLORS.256color"
if [ -z "$COLORS" ]; then
for colors in "/etc/DIR_COLORS.$TERM" "/etc/DIR_COLORS" ; do
[ -e "$colors" ] && COLORS="$colors" && break
done
fi
# Existence of $COLORS already checked above.
[ -n "$COLORS" ] || return
eval "`dircolors --sh "$COLORS" 2>/dev/null`"
[ -z "$LS_COLORS" ] && return
grep -qi "^COLOR.*none" $COLORS >/dev/null 2>/dev/null && return
fi
alias ll='ls -l --color=auto' 2>/dev/null
alias l.='ls -d .* --color=auto' 2>/dev/null
alias ls='ls --color=auto' 2>/dev/null
那么,我是否编辑/etc/profile.d/colorls.sh,如果是,在两个出现的地方ll
?还是有更好的方法来解决它?
对于具有Ivy Bridge 处理器的 KVM 主机,应在 Virtual Machine Manager 中将哪个MODEL用于CPU>CONFIGURATION ?常春藤桥不可用。
我有一个不错的 CentOS 6.5 专用主机(CentOS 6.5/E3-1230 3.2Ghz 四核 + HT/16GB/Software Raid 1 SATA II/ WD2503ABYX /ext4),默认 CentOS 内核和 grub 中的“elevator=deadline”。
I/O 写入操作会导致 CPU 使用率急剧上升。读取工作正常。例如,
dd if=/dev/zero of=test bs=1048576 count=2048
导致主机的 CPU 利用率飙升至 3 或 4 以上。在正常操作下,它保持在 0.40 以下,但当有一些更密集的 I/O 操作时,一切都会停止。
mpstat 1
在这些dd
测试中显示io 等待在 20-25%。
这是磁盘布局:
Disk /dev/sda: 251.1 GB, 251059544064 bytes
255 heads, 63 sectors/track, 30522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c6673
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 548 4194304 fd Linux raid autodetect
Partition 2 does not end on cylinder boundary.
/dev/sda3 548 30523 240775168 fd Linux raid autodetect
Disk /dev/sdb: 251.1 GB, 251059544064 bytes
255 heads, 63 sectors/track, 30522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00095c99
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 26 204800 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdb2 26 548 4194304 fd Linux raid autodetect
Partition 2 does not end on cylinder boundary.
/dev/sdb3 548 30523 240775168 fd Linux raid autodetect
Disk /dev/md2: 246.6 GB, 246552588288 bytes
2 heads, 4 sectors/track, 60193503 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md1: 4293 MB, 4293910528 bytes
2 heads, 4 sectors/track, 1048318 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/vg_main-LogVol00: 246.5 GB, 246549577728 bytes
255 heads, 63 sectors/track, 29974 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md0: 209 MB, 209702912 bytes
2 heads, 4 sectors/track, 51197 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
问题(高 CPU 使用率)在去年 12 月下旬的某个时候开始发生,这让我相信它与软件有关(磁盘 susbsystem 已由 DC 的人检查过)。
我接下来应该运行哪些测试来尝试隔离问题?
PS:我不是在寻找性能最大化技巧。服务器未充分利用。我只是想减少磁盘写入期间的 CPU 负载。
更新:问题重新设计以更好地描述问题。
更新:找到解决方案当我遇到这篇文章时,我终于发现了问题所在。
root> modprobe vhost_net
root> echo vhost_net > /etc/modules
由于某种原因,virtio 接口之前没有加载驱动程序。现在一切都很好。
在 KVM 主机上,正常关闭来宾 KVM 后,我得到:
[root@kvm]# /sbin/shutdown -h now
Broadcast message from [email protected]
(/dev/pts/1) at 15:23 ...
The system is going down for halt NOW!
**shutdown: Method "EmitEvent" with signature "sasb" on interface "com.ubuntu.Upstart0_6" doesn't exist**
而且我无法重新启动机器。-Ph 或 -r 也是如此。
谢谢
更新1:我将把这个问题搁置,直到下次我必须重新启动这台机器。
更新 2:reboot
有效。