启用压缩的 BTRFS 使用启发式方法来不压缩不能很好压缩的文件。使用“btrfs filesystem defrag -c”压缩现有文件是否也使用启发式,或者是否压缩所有文件,即使它们不能很好地压缩?
allo's questions
我在 debian 上安装了automysqlbackup。我将 USERNAME 和 PASSWORD 添加到/etc/default/automysqlbackup
,但是当 automysqlbackup 运行时,我得到输出:
/etc/cron.daily/automysqlbackup:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO
就好像我不会配置任何凭据一样。
automysqlbackup 配置是默认配置,最后添加了两行:
USERNAME=root
PASSWORD="the root password"
/etc/mysql/debian.cnf
默认配置尝试从(在 bash 片段中使用 grep )获取凭据/etc/default/automysqlbackup
,其中包含警告该文件已被弃用并且在新安装中不再包含任何管理员密码。
/etc/default/automysqlbackup
我用 strace 尝试了 automysqlbackup,即使不是由 cron 启动,它也至少可以读取。但是,它不使用密码。
我想用来recipient_delimiter
允许地址,比如user+anything@domain
在涉及 spamd 和 dovecot 的设置中。
过去我有一个这样的设置,只使用后缀,但是我的设置使用 spamd 和 dovecot 传递它不起作用,因为似乎 spamd/dovecot 正在搜索邮箱user+anything@domain
而不是user@domain
.
我的对应行master.cf
是:
spamc unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/bin/spamc -e /usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
我读到让它工作的方法maildrop
是
maildrop unix - n n - - pipe
flags=DRhu user=Debian-exim argv=/usr/bin/maildrop -d ${user}@${nexthop}
${extension} ${recipient} ${user} ${nexthop}
但我没有得到它的工作spamc
和交付。哪些变量是正确的,程序是否To
自行解析标头?
当文件的校验和失败时,我想重新启动由monit监控的进程。目前我使用
check process prosody with pidfile /var/run/prosody/prosody.pid
depends certificate_file
start program "/etc/init.d/prosody start"
stop program "/etc/init.d/prosody stop"
restart program "/etc/init.d/prosody restart"
check file certificate_file with path /etc/prosody/certs/fullchain.pem
if changed checksum then exec "/usr/bin/monit restart prosody"
但我想有一些命令,if changed checksum then restart prosody
而不是使用 monit 二进制文件exec
。
该restart
操作似乎仅限于重新启动当前监视的进程,因此check file
块中的操作不会执行任何操作。
我在一些 LXC 容器中破坏了 IPv6,奇怪的是,我什至无法 ping 接口上的地址。
$ ip -6 r
prefix::/112 dev eth0 proto kernel metric 256
$ ip -6 a show dev eth0
69: eth0@if70: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 prefix::3/112 scope global tentative dadfailed
valid_lft forever preferred_lft forever
现在ping6 prefix::3
失败了
64 bytes from localhost (::1): Destination unreachable: Address unreachable
我尝试禁用防火墙(这不应该有任何影响,因为本地数据包不应该击中 INPUT 链),但这并没有改变任何东西。
另一件奇怪的事情:接口没有获得链接本地地址。
该操作系统是 debian jessie 的最小安装。其他安装了 debian jessie 的容器在 IPv6 上运行良好。
假设我有这些记录:
- 一个mail.somedomain:127.0.0.1
- 一个mail.mailserverdomain:127.0.0.1
- MX somedomain:mail.somedomain
MTA 连接mail.somedomain
以传递邮件somedomain
并获得证书以供mail.mailserverdomain
提交,MTA 将其主机名显示mail.mailserverdomain
为HELO
.
这是一个有效的 TLS 会话还是意味着一个错误主机名的证书(期望somedomain
或reverse.somedomain
)?
据我了解,升级openssl(很久以前完成,现在再次安装所有可用更新(那里没有openssl))并重新启动nginx就足够了。我什至试图完全停止 nginx(用 验证它ps
)并重新启动它。
但是 ssllabs 仍然告诉我,我很脆弱。我还需要做什么,或者是什么导致它仍然脆弱?
版本:
ii nginx 1.9.10-1 all small, powerful, scalable web/proxy server
ii nginx-common 1.9.10-1 all small, powerful, scalable web/proxy server - common files
ii nginx-full 1.9.10-1 amd64 nginx web/proxy server (standard version)
ii openssl 1.0.1t-1+deb8u2 amd64 Secure Sockets Layer toolkit - cryptographic utility
ii libssl-dev:amd64 1.0.1t-1+deb8u2 amd64 Secure Sockets Layer toolkit - development files
ii libssl-doc 1.0.1t-1+deb8u2 all Secure Sockets Layer toolkit - development documentation
ii libssl1.0.0:amd64 1.0.1t-1+deb8u2 amd64 Secure Sockets Layer toolkit - shared libraries
ii libssl1.0.2:amd64 1.0.2f-2 amd64 Secure Sockets Layer toolkit - shared libraries
与nginx相关的lsof
lsof 2>/dev/null |grep -i libssl|grep nginx
nginx 17928 root mem REG 251,0 430560 2884885 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
nginx 17929 www-data mem REG 251,0 430560 2884885 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
nginx 17930 www-data mem REG 251,0 430560 2884885 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
nginx 17932 www-data mem REG 251,0 430560 2884885 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
nginx 17933 www-data mem REG 251,0 430560 2884885 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.2
我有一台带有千兆上行链路的服务器,iperf3
使用 100 个并行连接进行测试,我得到至少 600 MBit/s,具体取决于另一台服务器(我尝试了一些公共测试服务器)。但是当我iperf3
使用一个连接运行时,我得到10-15 MBit/s
了两个20-30 MBit/s
,依此类推。
我没有很复杂的 iptables 规则,也没有其他想法,为什么它这么慢。单个 tcp 连接的限制因素是什么,它们比可能的带宽慢 10 倍?
我尝试使用 nginx 配置带有和不带有额外每个虚拟主机配置的虚拟主机。我想到了这样的事情:
server {
listen 81;
server_name ~^(www\.)?(?<sname>.+?)$;
root /var/www/$sname;
include /etc/nginx/sites/$sname;
access_log /var/log/nginx/$sname/access.log;
error_log /var/log/nginx/$sname/error.log;
}
然后我可以只touch /etc/nginx/mysite.example.com
添加一个带有静态 html 的新站点,同时我可以编辑 vhost 的文件以添加例如反向代理指令或一些重写规则。
问题是,nginx 似乎在启动时包含了配置。拥有类似的东西会更干净
for $config in /etc/nginx/sites:
{
server_name $config
root /var/www/$config
include $config
[...]
}
它应该在开始时运行,而不是在对 vhost 的第一个请求时运行。
PAM 允许使用sufficent
和required
一些逻辑,比如
auth sufficient pam_a.so
auth required pam_b.so
auth required pam_c.so
这意味着“要么 a 为真,要么 b 必须为真,然后 c 必须为真”。
是否可以进行更复杂的操作?像“(a或b)和(c或d)”或“(a和b)或(c和d)”?可能还有更多层次的括号。
我使用 lighttpd 反向代理为 django 提供 gunicorn 服务。现在这个配置工作了:
proxy.server = ("" => ( "" => (
"host" => "127.0.0.1",
"port" => 8000,
)))
现在我将 gunicorn 移入容器并使用:
proxy.server = ("" => ( "" => (
"host" => "192.168.1.2",
"port" => 8000,
)))
现在每个请求都有192.168.1.1
gunicorn看到的ip。我会理解,如果反向代理混淆了真实 IP,但为什么它与 localhost 一起工作呢?
我得到了
X-Forwarded-For: client-ip
X-Host: the.domain
X-Forwarded-Proto: http
其中客户端 IP 是公共 IP 空间。
请求来自
主持人:
nc: connect to 127.0.0.1 8000 from localhost (127.0.0.1) 44953 [44953]
容器:
nc: connect to 192.168.1.2 8000 from host (192.168.1.1) 60027 [60027]
容器本身有 ip 192.168.1.2
,主机桥有192.168.1.1
,容器内的路由是:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
主机有:
192.168.1.0/24 dev bridge proto kernel scope link src 192.168.1.1
编辑:两个请求的 X-Forwarded-For 相同。(用 测试nc -vlp 8000
)。
我想将一个 ipv6 ip 路由到一个 lxc 容器,但数据包没有被转发。我不想将 lxc 容器桥接到 eth0,也不想使用自动配置。此外,我只有一个/64
主机,所以我需要为虚拟机使用一个较小的网络。我现在选择了一个/112
,如果需要的话我可以使用更大的网络。
我想问题是路由,而不是容器。这是我的设置:
主持人:
# the host already has working ipv6, empty ip6tables FORWARD table with policy ACCEPT
ip -6 addr add prefix::1/112 dev lxcbr
ip -6 route show|grep prefix
# prefix::/112 dev lxcbr proto kernel metric 256
sysctl net.ipv6.conf.eth0.forwarding
# net.ipv6.conf.eth0.forwarding = 1
sysctl net.ipv6.conf.lxcbr.forwarding
# net.ipv6.conf.lxcbr.forwarding = 1
虚拟机:
ip -6 addr add prefix::2/112 dev eth0
ip -6 route add default via fe80:: dev eth0 # routing via prefix::1 does not work either
ip -6 route show
# prefix::/112 dev eth0 proto kernel metric 256
# fe80::/64 dev eth0 proto kernel metric 256
# default via fe80:: dev eth0 metric 1024
工作(虚拟机):
ping6 prefix::1 # host
工作(主持人):
ping6 prefix::2 # vm
不工作(虚拟机):
ping6 google.com
# PING google.com (2a00:1450:4001:805::1007): 48 data bytes
# --- google.com ping statistics ---
# 7 packets transmitted, 0 packets received, 100% packet los
主机上的 tcpdump:
tcpdump -i lxcbr icmp6
# 13:20:44.088814 IP6 prefix::1 > fra07s32-in-x07.1e100.net: ICMP6, echo request, seq 0, length 56
# 13:20:45.089268 IP6 prefix::1 > fra07s32-in-x07.1e100.net: ICMP6, echo request, seq 1, length 56
# [...]
tcpdump -i eth0 icmp6
# [no output]
ip6tables-A FORWARD -j LOG
也不会记录任何数据包。
编辑:因为每个人都抱怨网络小于:界面上/64
的问题仍然存在。问题是,当使用从一个(虚拟)接口到另一个(物理)接口的静态路由时/64
,没有数据包进入iptables 队列。FORWARD
具有较小网络的设置是在其工作时希望拥有的,因为我的提供商希望为更多网络支付相当大的费用(接近服务器租金的 50%)。但是对于测试,如果它有助于测试,我可以使用整个/64
或大网。fd/8
有没有办法为域名使用通配符,比如
webmaster@*
域上地址的通配符与“@domain”一起使用,但“hostmaster@”不起作用。
当前使用 *@domain 通配符的设置:
主文件:
virtual_alias_maps = hash:/etc/postfix/virtual
虚拟(通配符代表domain
,一个邮件地址代表domain2
):
domain anything
domain2 anything
@domain user@localhost
mail@domain2 user2@localhost
现在我想为每个域都有一些标准地址,比如
webmaster@ user3@localhost
但是这种语法不能以这种方式工作。一种选择是手动将地址添加到每个(非通配符)域,另一种选择可能是使用pcre
虚拟表的映射。但是为别名使用 pcre-table 似乎太不干净了,我想避免手动添加它们。
是否有可能将 cgroup 限制为特定的网络接口?来自 cgroup 的所有数据包只能通过 VPN 连接进行路由,而其他数据包使用默认路由。
对于 unix 用户,可以使用 iptables “-m owner --set-mark”,然后使用“ip rule”进行路由。
可以匹配一个cgroup吗?iptables 似乎对此没有任何支持。
我想为来自特定域的每封外发邮件添加一个带有后缀的标题。目前我使用:
check_sender_access hash:/etc/postfix/prepend
使用 /etc/postfix/prepend:
my.domain PREPEND Header: value
这很好用,但是当我向多个收件人发送电子邮件时,会多次将标题添加到每个外发邮件中,每个收件人一个。
因此,当我向 4 个人发送邮件时,他们每个人都会收到一封邮件,其中包含 4 次标题。