AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-140324

Sammitch's questions

Martin Hope
Sammitch
Asked: 2018-04-12 12:14:01 +0800 CST

yum 依赖解析不起作用

  • 1

我有一个厨师食谱来引导一些我已经使用了很长时间的工作节点,并且有一段时间我第一次需要增加我的工作池的大小,但发现新节点不是由于 yum 错误而正确引导:

Error: Package: cyrus-sasl-md5-2.1.26-21.el7.x86_64 (abc-os)
           Requires: cyrus-sasl-lib(x86-64) = 2.1.26-21.el7
           Installed: cyrus-sasl-lib-2.1.26-20.el7_2.x86_64 (@abc-os)
               cyrus-sasl-lib(x86-64) = 2.1.26-20.el7_2

我们的内部仓库在哪里abc-os,所以我们可以锁定软件包版本。自然地,我认为这是问题所在,但是在检查存储库时,我发现两者的完整软件包集21.el7 和 20.el7_2都存在。

此外运行yum list available cyrus-sasl-md5给出:

cyrus-sasl-md5.i686       2.1.26-20.el7_2    abc-os
cyrus-sasl-md5.x86_64     2.1.26-21.el7      abc-os

/var/cache/yum/x86_64/7/abc-os/gen并在返回中查询 repo 的 sqlite 文件:

sqlite> SELECT name, arch, version, epoch, release FROM packages WHERE name LIKE 'cyrus%' ORDER BY arch, version, epoch, release, name;
cyrus-sasl-lib  i686        2.1.26      0           17.el7
cyrus-sasl-lib  i686        2.1.26      0           20.el7_2
cyrus-sasl-md5  i686        2.1.26      0           20.el7_2
cyrus-sasl-pla  i686        2.1.26      0           20.el7_2
cyrus-sasl      x86_64      2.1.26      0           17.el7
cyrus-sasl-dev  x86_64      2.1.26      0           17.el7
cyrus-sasl-lib  x86_64      2.1.26      0           17.el7
cyrus-sasl      x86_64      2.1.26      0           20.el7_2
cyrus-sasl-dev  x86_64      2.1.26      0           20.el7_2
cyrus-sasl-lib  x86_64      2.1.26      0           20.el7_2
cyrus-sasl-md5  x86_64      2.1.26      0           20.el7_2
cyrus-sasl-pla  x86_64      2.1.26      0           20.el7_2
cyrus-sasl      x86_64      2.1.26      0           21.el7
cyrus-sasl-dev  x86_64      2.1.26      0           21.el7
cyrus-sasl-lib  x86_64      2.1.26      0           21.el7
cyrus-sasl-md5  x86_64      2.1.26      0           21.el7
cyrus-sasl-pla  x86_64      2.1.26      0           21.el7

目前,我很困惑为什么会发生这种情况,以及如何进一步深入研究。

作为参考,操作系统是 CentOS 7.2 x86_64。

linux
  • 2 个回答
  • 896 Views
Martin Hope
Sammitch
Asked: 2017-06-02 12:38:23 +0800 CST

SSH 主机密钥更改的显式测试

  • 2

我正在编写一些自动化程序,但遇到了一个问题,即主机的密钥已更改并且扳手被投入工作。我想为这个特定条件添加一个飞行前检查,但我似乎无法ssh返回比它的全部 255 返回代码更多的东西。

例如:

$ ssh -o StrictHostKeyChecking=yes foobar@squiffy-host ls; echo $?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
...snip...
255

我怎样才能检测到这一具体案例?

linux
  • 2 个回答
  • 108 Views
Martin Hope
Sammitch
Asked: 2016-07-08 14:51:19 +0800 CST

Rsyslog 不记录事件

  • 2

我试图建立一个系统日志服务器来接收来自网络设备的事件,但我似乎无法让它真正将事件记录到磁盘。我可以确认连接已成功建立,并且 rsyslogd 正在获取事件,我只是无法弄清楚为什么它没有对它做任何事情。唯一被记录的是 rsyslogd 本身的启动。

下面的配置和调试输出,这最初是从 rsyslog chef cookbook 生成的,但我添加了一些调整来修复它抱怨的超级弃用语法。

rsyslog.conf:

$MaxMessageSize 2k
$PreserveFQDN off
$ModLoad imuxsock
$ModLoad imklog
$ModLoad imtcp
$InputTCPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$RepeatedMsgReduction on
$WorkDirectory /var/spool/rsyslog
$FileOwner root
$FileGroup root
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$IncludeConfig /etc/rsyslog.d/*.conf

rsyslog.d/*:

$DirGroup root
$DirCreateMode 0755
$FileGroup root
$template PerHostAuth,"/var/log/rsyslog/%HOSTNAME%/auth.log"
$template PerHostCron,"/var/log/rsyslog/%HOSTNAME%/cron.log"
$template PerHostSyslog,"/var/log/rsyslog/%HOSTNAME%/syslog"
$template PerHostDaemon,"/var/log/rsyslog/%HOSTNAME%/daemon.log"
$template PerHostKern,"/var/log/rsyslog/%HOSTNAME%/kern.log"
$template PerHostLpr,"/var/log/rsyslog/%HOSTNAME%/lpr.log"
$template PerHostUser,"/var/log/rsyslog/%HOSTNAME%/user.log"
$template PerHostMail,"/var/log/rsyslog/%HOSTNAME%/mail.log"
$template PerHostMailInfo,"/var/log/rsyslog/%HOSTNAME%/mail.info"
$template PerHostMailWarn,"/var/log/rsyslog/%HOSTNAME%/mail.warn"
$template PerHostMailErr,"/var/log/rsyslog/%HOSTNAME%/mail.err"
$template PerHostNewsCrit,"/var/log/rsyslog/%HOSTNAME%/news.crit"
$template PerHostNewsErr,"/var/log/rsyslog/%HOSTNAME%/news.err"
$template PerHostNewsNotice,"/var/log/rsyslog/%HOSTNAME%/news.notice"
$template PerHostDebug,"/var/log/rsyslog/%HOSTNAME%/debug"
$template PerHostMessages,"/var/log/rsyslog/%HOSTNAME%/messages"
auth,authpriv.*         ?PerHostAuth
*.*;auth,authpriv.none  -?PerHostSyslog
cron.*                  ?PerHostCron
daemon.*                -?PerHostDaemon
kern.*                  -?PerHostKern
lpr.*                   -?PerHostLpr
mail.*                  -?PerHostMail
user.*                  -?PerHostUser
mail.info               -?PerHostMailInfo
mail.warn               ?PerHostMailWarn
mail.err                ?PerHostMailErr
news.crit               ?PerHostNewsCrit
news.err                ?PerHostNewsErr
news.notice             -?PerHostNewsNotice
*.=debug;\
  auth,authpriv.none;\
  news.none;mail.none   -?PerHostDebug
*.=info;*.=notice;*.=warn;\
  auth,authpriv.none;\
  cron,daemon.none;\
  mail,news.none        -?PerHostMessages
:fromhost-ip,!isequal,"127.0.0.1" stop
*.info;mail.none;authpriv.none;cron.none    /var/log/messages
authpriv.*    /var/log/secure
mail.*    -/var/log/maillog
cron.*    /var/log/cron
*.emerg    :omusrmsg:*
uucp,news.crit    /var/log/spooler
local7.*    /var/log/boot.log
$SystemLogSocketName /run/systemd/journal/syslog

测试事件:

logger --server 127.0.0.1 --tcp --port 514 -p user.info test

strace -frsyslogd 接收事件,但什么也不做:

[pid 32310] accept(5, {sa_family=AF_INET, sin_port=htons(59755), sin_addr=inet_addr("127.0.0.1")}, [16]) = 11
[pid 32310] rt_sigprocmask(SIG_BLOCK, [HUP], ~[KILL STOP TTIN RTMIN RT_1], 8) = 0
[pid 32310] open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 12
[pid 32310] fstat(12, {st_mode=S_IFREG|0644, st_size=451, ...}) = 0
[pid 32310] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb290d18000
[pid 32310] read(12, "#\n# This file is managed by Chef"..., 4096) = 451
[pid 32310] close(12)                   = 0
[pid 32310] munmap(0x7fb290d18000, 4096) = 0
[pid 32310] rt_sigprocmask(SIG_SETMASK, ~[KILL STOP TTIN RTMIN RT_1], NULL, 8) = 0
[pid 32310] fcntl(11, F_GETFL)          = 0x2 (flags O_RDWR)
[pid 32310] fcntl(11, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid 32310] epoll_ctl(10, EPOLL_CTL_ADD, 11, {EPOLLIN, {u32=2147497424, u64=140404628403664}}) = 0
[pid 32310] epoll_wait(10, {{EPOLLIN, {u32=2147497424, u64=140404628403664}}}, 128, -1) = 1
[pid 32310] recvfrom(11, "<14>Jul  7 22:41:54 stack: test\0", 131072, MSG_DONTWAIT, NULL, NULL) = 32
[pid 32310] gettimeofday({1467931314, 137777}, NULL) = 0
[pid 32310] epoll_wait(10, {{EPOLLIN, {u32=2147497424, u64=140404628403664}}}, 128, -1) = 1
[pid 32310] recvfrom(11, "", 131072, MSG_DONTWAIT, NULL, NULL) = 0
[pid 32310] epoll_ctl(10, EPOLL_CTL_DEL, 11, {EPOLLIN, {u32=2147497424, u64=140404628403664}}) = 0
[pid 32310] close(11)                   = 0
[pid 32310] epoll_wait(10,
linux centos syslog centos7 rsyslog
  • 1 个回答
  • 1172 Views
Martin Hope
Sammitch
Asked: 2015-08-01 15:41:10 +0800 CST

Bind 9.2 服务器拒绝从子区域解析 CNAME

  • 1

我有一个运行 Bind 9.2 的旧主名称服务器和一个运行 9.8 的新从属服务器。现在我们有一个项目正在进行,我们基本上将云一分为二,我们使用子区域和 CNAME 来保持我们的服务顺利运行。但是,老旧的 9.2 服务器似乎不想将 CNAME 解析为子区域并返回REFUSED: recursion requested but not available. 另一方面,9.8 服务器可以很好地处理请求。

免责声明:我知道这些域名服务器已经过时了,更糟糕的是,运行 9.2 操作系统的服务器也失去了支持,所以我不太可能找到一个有信誉的软件包来升级它。云拆分后的项目正在从头开始重建我们的 DNS 服务器/服务。

如何让旧服务器正确解析这些 CNAME?

dig结果

挖@NS1 [绑定9.2]

# dig foo.domain.com @ns1.domain.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.3 <<>> foo.domain.com @ns1.domain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 5937
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;foo.domain.com.        IN      A

;; Query time: 116 msec
;; SERVER: 4.3.2.1#53(4.3.2.1)
;; WHEN: Fri Jul 31 16:18:36 2015
;; MSG SIZE  rcvd: 48

挖@NS2 [绑定9.8]

# dig foo.domain.com @ns2.domain.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.3 <<>> foo.domain.com @ns2.domain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59986
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;foo.domain.com.        IN      A

;; ANSWER SECTION:
foo.domain.com. 300 IN  CNAME   foo.sub.domain.com.
foo.sub.domain.com. 300 IN A     5.6.7.8

;; AUTHORITY SECTION:
sub.domain.com.  300     IN      NS      ns1.domain.com.
sub.domain.com.  300     IN      NS      ns2.domain.com.

;; ADDITIONAL SECTION:
ns1.domain.com.     30      IN      A       4.3.2.1
ns2.domain.com.     30      IN      A       1.2.3.4

;; Query time: 80 msec
;; SERVER: 1.2.3.4#53(1.2.3.4)
;; WHEN: Fri Jul 31 16:22:29 2015
;; MSG SIZE  rcvd: 161

配置

下面是服务器的配置文件,精简到最基本的部分。

NS1 [绑定 9.2]

options {
        recursion no;
        additional-from-auth no;
        additional-from-cache no;
        blackhole { bogon; };
        directory "/var/named";
        notify yes;
};
zone "domain.com" {
        type master;
        file "/var/named/domain.com.hosts";
        also-notify { 1.2.3.4; };
        notify yes;
};
zone "sub.domain.com" {
        type master;
        file "/var/named/sub.domain.com.hosts";
        also-notify { 1.2.3.4; };
        notify yes;
};

NS2 [绑定 9.8]

options {
        directory       "/var/named";
        recursion no;
        blackhole{ bogon; };
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
};
zone "domain.com" {
        type slave;
        masters { 4.3.2.1; };
        allow-transfer { 4.3.2.1; };
        file "/var/named/slaves/domain.com.hosts";
};
zone "sub.domain.com" {
        type slave;
        masters { 4.3.2.1; };
        allow-transfer { 4.3.2.1; };
        file "/var/named/slaves/sub.domain.com.hosts";
};

domain.com.hosts

$ORIGIN .
$TTL 300        ; 5 minutes
domain.com      IN SOA  ns1.domain.com. servers.domain.com. ( ... )
    NS      ns1.domain.com.
    NS      ns2.domain.com.
$ORIGIN domain.com.
sub NS ns1.domain.com.
sub NS ns2.domain.com.
foo CNAME foo.sub

sub.domain.com.hosts

$ORIGIN .
$TTL 300        ; 5 minutes
sub.domain.com   IN SOA  ns1.domain.com. servers.domain.com. ( ... )
    NS      ns1.domain.com.
    NS      ns2.domain.com.
$ORIGIN sub.domain.com.
foo A 5.6.7.8
linux
  • 2 个回答
  • 3747 Views
Martin Hope
Sammitch
Asked: 2015-06-20 16:44:03 +0800 CST

无法跨网络连接到 MS 服务

  • 1

所以我们有两个办公室通过 Sonicwall IKE VPN 连接:

  • 总部是 10.42.0.0/16
  • 远程是 10.63.0.0/16

总部的 Windows 7 Pro 机器上有一个 MS 文件共享,10.42.3.203,远程办公室的机器需要访问它。两个防火墙对两个网络之间的流量都有“允许任何对任何”规则,并且没有适用于流量的拒绝规则。

以下是远程办公室某人尝试访问总部共享的 tshark 记录。运行它的机器侦听总部防火墙后面的镜像上行链路端口。

414.411940   10.63.3.39 -> 10.42.3.203  TCP 66 55628 > microsoft-ds [SYN] Seq=0 Win=8192 Len=0 MSS=1398 WS=256 SACK
415.518100   10.63.3.39 -> 10.42.3.203  TCP 66 55635 > microsoft-ds [SYN] Seq=0 Win=8192 Len=0 MSS=1398 WS=256 SACK
415.519325   10.63.3.39 -> 10.42.3.203  TCP 66 55636 > netbios-ssn [SYN] Seq=0 Win=8192 Len=0 MSS=1398 WS=256 SACK_
417.429670   10.63.3.39 -> 10.42.3.203  TCP 66 [TCP Retransmission] 55628 > microsoft-ds [SYN] Seq=0 Win=8192 Len=0
418.516965   10.63.3.39 -> 10.42.3.203  TCP 66 [TCP Retransmission] 55636 > netbios-ssn [SYN] Seq=0 Win=8192 Len=0
418.516969   10.63.3.39 -> 10.42.3.203  TCP 66 [TCP Retransmission] 55635 > microsoft-ds [SYN] Seq=0 Win=8192 Len=0
423.421594   10.63.3.39 -> 10.42.3.203  TCP 62 [TCP Retransmission] 55628 > microsoft-ds [SYN] Seq=0 Win=65535 Len=
424.525998   10.63.3.39 -> 10.42.3.203  TCP 62 [TCP Retransmission] 55636 > netbios-ssn [SYN] Seq=0 Win=8192 Len=0
424.526002   10.63.3.39 -> 10.42.3.203  TCP 62 [TCP Retransmission] 55635 > microsoft-ds [SYN] Seq=0 Win=8192 Len=0
436.553750   10.63.3.39 -> 10.42.3.203  NBNS 92 Name query NBSTAT *<00><00><00><00><00><00><00><00><00><00><00><00>
436.554051  10.42.3.203 -> 10.63.3.39   NBNS 217 Name query response NBSTAT
436.603070   10.63.3.39 -> 10.42.3.203  TCP 66 55690 > netbios-ssn [SYN] Seq=0 Win=8192 Len=0 MSS=1398 WS=256 SACK_
439.614949   10.63.3.39 -> 10.42.3.203  TCP 66 [TCP Retransmission] 55690 > netbios-ssn [SYN] Seq=0 Win=8192 Len=0
445.600591   10.63.3.39 -> 10.42.3.203  TCP 62 [TCP Retransmission] 55690 > netbios-ssn [SYN] Seq=0 Win=8192 Len=0
457.620875   10.63.3.39 -> 10.42.3.203  TCP 66 55734 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1398 WS=4 SACK_PERM=1
457.621149  10.42.3.203 -> 10.63.3.39   TCP 60 http > 55734 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
458.159020   10.63.3.39 -> 10.42.3.203  TCP 66 [TCP Port numbers reused] 55734 > http [SYN] Seq=0 Win=8192 Len=0 MS
458.159258  10.42.3.203 -> 10.63.3.39   TCP 60 http > 55734 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
458.689704   10.63.3.39 -> 10.42.3.203  TCP 62 [TCP Port numbers reused] 55734 > http [SYN] Seq=0 Win=8192 Len=0 MS
458.690002  10.42.3.203 -> 10.63.3.39   TCP 60 http > 55734 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
458.725494   10.63.3.39 -> 10.42.3.203  TCP 66 55736 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1398 WS=4 SACK_PERM=1
458.725696  10.42.3.203 -> 10.63.3.39   TCP 60 http > 55736 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
459.260930   10.63.3.39 -> 10.42.3.203  TCP 66 [TCP Port numbers reused] 55736 > http [SYN] Seq=0 Win=8192 Len=0 MS
459.261180  10.42.3.203 -> 10.63.3.39   TCP 60 http > 55736 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
459.795362   10.63.3.39 -> 10.42.3.203  TCP 62 [TCP Port numbers reused] 55736 > http [SYN] Seq=0 Win=8192 Len=0 MS
459.795640  10.42.3.203 -> 10.63.3.39   TCP 60 http > 55736 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0

它似乎只是忽略数据包,直到它响应的 NBNS 查询,然后它交替忽略或 RST 任何其他数据包。

它还做了一件有趣的事情,其中​​ ping 以一种方式工作,但不是另一种方式:

 29.683073  10.42.3.203 -> 10.63.3.39   ICMP 74 Echo (ping) request  id=0x0001, seq=36/9216, ttl=128
 29.688421   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) reply    id=0x0001, seq=36/9216, ttl=128
 30.758418  10.42.3.203 -> 10.63.3.39   ICMP 74 Echo (ping) request  id=0x0001, seq=37/9472, ttl=128
 30.764715   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) reply    id=0x0001, seq=37/9472, ttl=128
 31.759546  10.42.3.203 -> 10.63.3.39   ICMP 74 Echo (ping) request  id=0x0001, seq=38/9728, ttl=128
 31.764583   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) reply    id=0x0001, seq=38/9728, ttl=128
 32.760653  10.42.3.203 -> 10.63.3.39   ICMP 74 Echo (ping) request  id=0x0001, seq=39/9984, ttl=128
 32.766173   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) reply    id=0x0001, seq=39/9984, ttl=128
 45.221105   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) request  id=0x0001, seq=4217/30992, ttl=128
 49.749227   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) request  id=0x0001, seq=4218/31248, ttl=128
 54.747578   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) request  id=0x0001, seq=4219/31504, ttl=128
 59.754256   10.63.3.39 -> 10.42.3.203  ICMP 74 Echo (ping) request  id=0x0001, seq=4220/31760, ttl=128

机器上没有启用windows防火墙,总部内的所有机器都可以访问它。网络中的其他地方有一个 Samba 服务器,它在所有办公室都可以正常工作。就像这些 Windows 机器只是拒绝来自不在其子网中的事物的流量。

免责声明:我没有选择子网划分或在 Windows 7 机器上运行文件共享。它们都早于我的时间,我目前无法更改。我知道他们分别是愚蠢的/坏的,请试着看过去。谢谢。

windows
  • 1 个回答
  • 243 Views
Martin Hope
Sammitch
Asked: 2015-01-17 15:06:16 +0800 CST

Nginx 缓存不更新

  • 2

所以我的同事为我们设置了一个新奇的缓存代理系统,然后立即去度假。现在我收到来自我们的开发人员/设计人员的抱怨,说许多静态资源被缓存的时间比我见过的任何配置都长得多。

例如,某个徽标文件在 13 日已更改,但仍返回 9 日的版本,尽管设置为:proxy_cache_valid 200 1h;应该只缓存 1 小时。

据我所见,上游服务器正在向 Nginx 提供标头Expires: Sat, 14 Feb 2015 19:33:58 GMT,并且缓存到期只是在运行,而不管Last-Modified:标头已更改。我已经查看了上游服务器的日志,并且代理没有尝试检查文件的状态。

如何让 Nginx 检查更新的内容?

来自缓存的响应标头:

# curl -v -XHEAD 'http://foo.company.com/inc/skins/pt-1r/schemes/default/img/logo.png'
* About to connect() to foo.company.com port 80 (#0)
*   Trying 1.2.3.4... connected
* Connected to foo.company.com (1.2.3.4) port 80 (#0)
> HEAD /inc/skins/pt-1r/schemes/default/img/logo.png HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: foo.company.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.0.15
< Date: Thu, 15 Jan 2015 19:37:19 GMT
< Content-Type: image/png
< Connection: keep-alive
< Last-Modified: Fri, 09 Jan 2015 00:04:42 GMT
< Content-Length: 19198
< Cache-Control: max-age=2592000, public, must-revalidate, proxy-revalidate
< Expires: Thu, 12 Feb 2015 22:54:22 GMT
< Vary: User-Agent
< Content-Language: en
< X-Cache-Status: HIT
< Accept-Ranges: bytes

与直接从服务器相反:

# curl -v --header "Host: foo.company.com" -XHEAD http://10.1.2.3/inc/skins/pt-1r/schemes/default/img/logo.png
* About to connect() to 10.1.2.3 port 80 (#0)
*   Trying 10.1.2.3... connected
* Connected to 10.1.2.3 (10.1.2.3) port 80 (#0)
> HEAD /inc/skins/pt-1r/schemes/default/img/logo.png HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Accept: */*
> Host: foo.company.com
>
< HTTP/1.1 200 OK
< Date: Thu, 15 Jan 2015 19:33:58 GMT
< Server: Apache
< Last-Modified: Tue, 13 Jan 2015 23:04:44 GMT
< Accept-Ranges: bytes
< Content-Length: 45255
< Cache-Control: max-age=2592000, public, must-revalidate, proxy-revalidate
< Expires: Sat, 14 Feb 2015 19:33:58 GMT
< Vary: User-Agent
< Content-Type: image/png
< Content-Language: en

代理.conf

# Store cached date here
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:128m inactive=1d max_size=1g;

# Use cache defined above
proxy_cache             cache;
proxy_cache_key         $scheme$host$request_uri;

# Only cache positive responses
proxy_cache_valid       200 1h;
proxy_cache_valid       301 302 5m;

# Temp path for when buffers overflow
proxy_temp_path /var/lib/nginx/temp;

# Buffer data (must be on to allow caching)
proxy_buffering    on;
proxy_buffer_size  128k;
proxy_buffers 100  128k;

# Set some headers
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;

# Die if backend takes too long to connect
proxy_connect_timeout   5;

# Allow adding abcnocache=1 to URLs to skip the cache
proxy_cache_bypass              $arg_abcnocache;

# Add a header showing the cache status
add_header X-Cache-Status $upstream_cache_status;

该站点的配置:

server {

    server_name foo.company.com *.foo.company.com ;
    listen 80;

    access_log    /var/log/nginx/foo.company.com-access.log;
    error_log     /var/log/nginx/foo.company.com-error.log;

    location / {
        proxy_pass  http://10.1.2.3;
        proxy_redirect default;
    }

}

nginx.conf 很好的衡量标准:

user nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {

  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  access_log    /var/log/nginx/access.log;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout  65;

  gzip  on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_vary off;
  gzip_types text/plain text/css application/x-javascript text/xml application/xml application/rss+xml application/atom+xml text/javascript application/javascript application/json text/mathml;
  gzip_min_length  1000;
  gzip_disable     "MSIE [1-6]\.";

  server_names_hash_bucket_size 64;
  types_hash_max_size 2048;
  types_hash_bucket_size 64;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}
nginx
  • 1 个回答
  • 3850 Views
Martin Hope
Sammitch
Asked: 2014-07-10 10:11:29 +0800 CST

轮换由 DHCP 指定的 DNS 服务器

  • 1

我有一个运行着大约 200 个 CentOS 实例的 OpenStack 集群,我的托管服务提供商抱怨说 DNS 流量对他们的服务器来说太多了。为了解决这个问题,我设置了几个绑定解析器实例,并希望通过 DHCP 将它们推出,但我无法找到一种方法来确保 resolv.conf 指令options rotate要么通过 dhcp 推出,要么可以通过一些我认为会存在的配置文件进行设置/etc/sysconfig。

linux
  • 3 个回答
  • 2541 Views
Martin Hope
Sammitch
Asked: 2013-08-22 13:42:15 +0800 CST

在实时服务器上重新挂载根分区

  • 1

我们在这里运行了一些 apache/PHP/mysql 服务器,我注意到它们中没有一个具有在它们的noatime任何 fstab 中指定的选项。鉴于在它们上运行的 PHP 应用程序倾向于为每个请求爬出数十个包含,我认为我们应该能够通过关闭atime跟踪来减少文件系统上的一些负载。

我已经检查过了,没有人需要知道任何东西的访问时间,或者甚至知道这是一件事,所以我想做的只是:

mount -o remount,noatime /

但是,有两个问题:

  1. MySQL 死了,因为文件系统消失了一微秒。在这种情况下,我会暂时停止它。
  2. 操作系统因此而死亡。

我对重启这些机器的前景并不感到疯狂,因为它们中的大多数正常运行时间是我在这家公司工作的几倍,而且谁知道重启时会发生什么。

那么,在服务器运行时我不应该重新挂载根分区是否有任何实际的、基于事实的原因?

linux
  • 1 个回答
  • 881 Views
Martin Hope
Sammitch
Asked: 2013-08-21 09:21:06 +0800 CST

将 mysql 凭据传递给 pt-stalk 而不让它们在命令行上可见

  • 1

我正在尝试使用 init 脚本推出 pt-stalk,但是如果不将它们放入MYSQL_OPTSpt-stalk 启动部分,我很难将 mysql 凭据放入脚本中。[文档]

通常在服务器上,我们有 /root/.my.cnf 包含该机器的管理员凭据,但是无论我是否HOME将脚本中的 var 显式设置/root为 init 脚本 pt-stalk 都无法启动,因为 mysql CLI 实用程序无法找到凭据。

我浏览了手册页,但找不到任何允许我指定要使用的凭据文件而不是将所有内容都作为命令行参数的内容。

有问题的初始化脚本:

#!/usr/bin/env bash
# chkconfig: 2345 20 80
# description: pt-stalk
### BEGIN INIT INFO
# Provides: pt-stalk
# Required-Start: $network $named $remote_fs $syslog
# Required-Stop: $network $named $remote_fs $syslog
# Should-Start: pt-stalk
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO

export HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/pt-stalk"
DAEMON_OPTS="--config /etc/pt-stalk.conf"
NAME="pt-stalk"
DESC="pt-stalk"
PIDFILE="/var/run/${NAME}.pid"
STALKHOME="/var/lib/pt-stalk"

test -x $DAEMON || exit 1

[ -r /etc/default/pt-stalk ] && . /etc/default/pt-stalk

#. /lib/lsb/init-functions

sig () {
    test -s "$PIDFILE" && kill -$1 `cat $PIDFILE`
}

start() {
  if [[ -z $MYSQL_OPTS ]]; then
HOME=$STALKHOME $DAEMON $DAEMON_OPTS
  else
HOME=$STALKHOME $DAEMON $DAEMON_OPTS -- $MYSQL_OPTS
  fi
return $?
}

stop() {
  if sig TERM; then
    while sig 0 ; do
      echo -n "."
      sleep 1
    done
    return 0
  else
    echo "$DESC is not running."
    return 1
  fi
}

status() {
  if sig 0 ; then
    echo "$DESC (`cat $PIDFILE`) is running."
    return 0
  else
    echo "$DESC is stopped."
    return 1
  fi
}

log_begin_msg() {
        echo $1
}

log_end_msg() {
        if [ $1 -eq 0 ]; then
           echo "Success"
        else
           echo "Failure"
        fi
}

case "$1" in
  start)
   log_begin_msg "Starting $DESC"
   start
   log_end_msg $?
   ;;

  stop)
   log_begin_msg "Stopping $DESC"
   stop
   log_end_msg $?
   ;;
  status)
    status ;;

  restart)
    log_begin_msg "Restarting $DESC"
    stop
    sleep 1
    start
    log_end_msg $?
    ;;

  *)
    echo "Usage: $0 {start|stop|status|}" >&2
    exit 1
    ;;
esac

最初来自GitHub,做了一些小改动。

mysql
  • 1 个回答
  • 269 Views
Martin Hope
Sammitch
Asked: 2013-04-09 14:18:02 +0800 CST

udev 可以在不重新启动的情况下“重新启动”吗?

  • 4

对于一般情况,假设 eth0 的虚拟适配器已被删除并替换为另一个。要么是由于克隆,要么是最近出现了一连串的 MAC 地址冲突。[是的,他们的皮疹。]

通常我只是简单地rm /etc/udev/rules.d/70-persistent-net-rules检查 /etc/sysconfig/network* 中没有任何内容包含对 MAC 地址的引用并重新启动,但这是 Linux,必须有一种方法可以避免重新启动。

有没有我可以运行的命令来获取新的 NIC?

编辑

除了下面@dawud 的回答之外,我在我的测试 VM 上遇到了一个问题,它已经使用新设备启动并命名eth1,在这种情况下udevadm似乎不会“释放”该设备。在这种情况下,我做了以下事情:

  1. 从 VSphere 获取设备的 MAC 地址。
  2. 用MAC 地址代入/etc/iftab的行创建/编辑。当此文件不存在/包含目标接口的名称时,似乎不喜欢它。eth0 mac ##:##:##:##:##:##ifrename
  3. ifrename -i eth1 -n eth0
  4. service network restarteth0 正常启动。
  5. [可选]rm /etc/iftab这样 MAC 就少了一个地方。
redhat
  • 2 个回答
  • 14935 Views
Martin Hope
Sammitch
Asked: 2013-01-10 11:02:21 +0800 CST

“yum update ./*.rpm”的潜在问题?

  • 2

这周我有一台批处理机器要更新,但我对我们既定的程序不太有信心。对于每台机器,它基本上都是这样运行的:

  1. 挂载特定于操作系统版本/位数的共享目录,即:mount -t cifs //server/share/rhel5.3-64/ /mnt/updates/
  2. yum update --downloadonly --downloaddir=/mnt/updates/
  3. yum update /mnt/updates/*.rpm

我们使用 mount 来减少我们使用的网络带宽量,但是由于每台机器可能安装了截然不同的软件包集,因此“更新”命令中包含的软件包甚至不存在于系统中,以及是某些软件包的多个旧版本。

这是个问题吗?在应用更改之前,yum 会跳过/删除任何不必要/过时的软件包吗?

编辑

阅读@aaron-copley 的回复后,我决定进行一些测试。我登录到服务器,安装共享,运行yum update --downloadonly --downloaddir=/mnt/updates/,卸载共享,执行yum clean all,重新安装,然后重新运行命令。什么都没有下载。[耶]

我删除了一个 rpm,再次运行命令,但只下载了那个包。[也耶]

我将共享安装在另一个运行相同 RHEL 版本的机器上,运行yum update --downloadonly --downloaddir=/mnt/updates/,即使它标记为 221 个包供下载,它也只下载共享中不存在的 30 个。[超级耶]

作为奖励,yum 还以粗体列出了已经下载的包。

redhat
  • 2 个回答
  • 350 Views
Martin Hope
Sammitch
Asked: 2012-11-01 13:58:46 +0800 CST

yum 使用共享缓存更新

  • 1

我们有一大批 RHEL6 机器需要打补丁,出于某种原因,这里的过程不涉及本地回购。我是新来的,我问过为什么,[“它就是没用”],我没有足够的时间让它在已经安排的窗口之前工作。

所以通常的方法是安装yum-downloadonly并运行yum update --downloadonly --downloaddir=/mnt/cifs_share然后yum update /mnt/cifs_share/*.rpm这对我来说不合适,因为并非所有这些机器都具有相同的安装包集。

我今天尝试的方法是挂载有效的共享/var/cache/yum/x86_64/6Server/rhel-x86_64-server-6/packages/,但 yum 在完成后自动删除所有内容。

我查看了yum手册页,但我没有看到任何可以提供给它以阻止它删除所有内容的标志,也没有看到像 up2date's 这样的标志--tmpdir=/mnt/cifs_share。

在我可以让本地存储库正常工作之前,有人可以帮我解决这个问题吗?

linux
  • 1 个回答
  • 522 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve