服务器管理员

系统和网络管理员的问答

3
阻止中国连接到我的Google Compute Engine服务器
我的公司在北美托管了一个Google Compute Engine服务器。我们有太多的中国IP地址向端口11发送请求,以至于我们花了钱进入该端口。我们的防火墙已经阻止了与中国的所有连接,因为它们无法访问我们的应用程序。 有没有一种方法可以完全忽略这些连接,或者以一种不会占用带宽的方式将其阻塞?

3
我应该在需要不可路由的内部IP地址的地方使用链接本地地址吗?
我有一个包含某些负载平衡功能的网络设备-在我的设计中,这些功能仅在设备内部使用。任何人都不得在外部与他们交谈,此外,客户端的设备IP范围内的IP地址不足。 将链接本地范围用于这些功能是否可以接受?例如,169.254.1.1。 注意:有问题的设备不允许将环回IP用于这些功能。
11 networking 

2
在Linux虚拟机中热删除内存
例如,在VMware中,Linux作为VM guest虚拟机运行时支持热添加内存。(有时您需要手动通知来宾操作系统。) 有没有一种安全的方法来进行逆操作-减少分配给虚拟机的内存量,如果这样,您是否需要在进行此操作之前手动通知Linux guest虚拟机?(如果是这样,那么该过程是特定于VMware工具的,还是对任何类型的虚拟化机制通用?)

4
服务器端的“ TIME_WAIT”如何真正起作用?
我知道有很多关于SE的问题,在达到这一点之前,我相信我阅读了很多重要的问题。 “服务器端TIME_WAIT”是指在服务器端启动了close()的服务器端套接字对的状态。 我经常看到这些与我矛盾的陈述: 服务器端TIME_WAIT无害 您应该设计网络应用程序,让客户端启动close(),因此让客户端承担 TIME_WAIT 我发现这一矛盾的原因是TIME_WAIT,在客户端上可能会出现问题-客户端可能会用尽可用端口,因此从本质上讲,以上建议将负担TIME_WAIT从客户端转移到客户端。服务器端,这不是问题。 TIME_WAIT对于有限的用例,客户端当然只是一个问题。大多数客户端-服务器解决方案都将涉及一台服务器和许多客户端,客户端通常无法处理足够多的连接,因此即使出现问题,也有许多建议可以“合理地”解决(而不是SO_LINGER使用0超时或与tcp_tw sysctls进行干预)TIME_WAIT通过避免太快地创建太多连接来打击客户端。但这并不总是可行的,例如对于以下应用程序类: 监控系统 负载发生器 代理 另一方面,我什至根本不了解服务器端如何提供TIME_WAIT帮助。原因TIME_WAIT甚至在那里,是因为它防止将过时的TCP片段注入到它们不再属于的流中。对于客户端TIME_WAIT,只需简单地使其无法与ip:port该过时的连接建立相同的连接就可以完成连接(使用的对由锁定TIME_WAIT)。但是对于服务器端而言,这是无法避免的,因为本地地址将具有接受端口,并且始终保持相同,并且服务器(仅因经验证明,我仅凭经验证明)无法拒绝连接,原因仅在于传入对等方将创建套接字表中已经存在的相同地址对。 我确实编写了一个程序,该程序显示服务器端TIME-WAIT被忽略。而且,由于测试是在127.0.0.1上完成的,因此内核必须具有一个特殊位,甚至可以告诉它是服务器端还是客户端(因为否则,元组将是相同的)。 来源:http : //pastebin.com/5PWjkjEf,已在Fedora 22(默认网络配置)上测试。 $ gcc -o rtest rtest.c -lpthread $ ./rtest 44400 s # will do server-side close Will initiate server close ... iterates ~20 times successfully ^C $ ss -a|grep 44400 tcp TIME-WAIT 0 …
11 tcp 

5
Docker-分别缩放Nginx和php-fpm
我一直在玩docker和docker-compose,有一个问题。 目前我的docker-compose.yml看起来像这样: app: image: myname/php-app volumes: - /var/www environment: <SYMFONY_ENVIRONMENT>: dev web: image: myname/nginx ports: - 80 links: - app volumes_from: - app 应用程序包含端口9000上的php-fpm和我的应用程序代码。Web是nginx,具有一些配置。 这可以实现我期望的功能,但是为了将nginx连接到php-fpm,我有这条线: fastcgi_pass app:9000; 我如何有效地扩展呢?例如,如果我想运行一个nginx容器,但运行三个app容器,那么我肯定要有三个php-fpm实例,所有实例都试图在端口9000上侦听。 如何在每个给定时间将每个php-fpm实例放在不同的端口上,但仍然知道它们在我的nginx配置中的位置? 我采用错误的方法吗? 谢谢!
11 nginx  php  php-fpm  docker 

3
是否有可能替换通过代理传递的每个页面上的内容,类似于将mod_rewrite用于URL的方式?
是否有可能替换通过代理传递的每个页面上的内容,类似于将mod_rewrite用于URL的方式?替代品的文档不明确。 我有一些页面是反向代理的,具有绝对路径。这破坏了站点。它们需要替换,并且像mod_rewrite这样的工具由于不是URL请求,因此无法对其进行处理。 <VirtualHost *:80> ServerName servername1 ServerAlias servername2 ErrorLog "/var/log/proxy/jpuat_prox_error_log" CustomLog "/var/log/proxy/jpuat_prox_access_log" common RewriteEngine on LogLevel alert rewrite:trace2 RewriteCond %{HTTP_HOST} /uat.site.co.jp$ [NC] RewriteRule ^(.*)$ http://jp.uat.site2uk.co.uk/$1 [P] AddOutputFilterByType SUBSTITUTE text/html Substitute "s|uat.site.co.jp|jp.uat.site2uk.co.uk|i" ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://uat.site.co.jp/ ProxyPassReverse / http://uat.site.co.jp/ </VirtualHost> 以上两种方法都不能替换HTML字符串 <link …

2
300Mbit(14%)处的UDP极端丢包,但不重传的TCP> 800Mbit
我有一个Linux盒子用作iperf3客户端,测试了2个配备Broadcom BCM5721、1Gb适配器(2个端口,但只有1个用于测试)的配置相同的Windows 2012 R2服务器盒。所有机器都通过一个1Gb交换机连接。 以例如300Mbit测试UDP iperf3 -uZVc 192.168.30.161 -b300m -t5 --get-server-output -l8192 导致丢失所有已发送数据包的14%(对于具有完全相同硬件的其他服务器盒,但是使用较旧的NIC驱动程序,丢失大约为2%),即使丢失50Mbit也会发生丢失,尽管严重程度较低。使用等效设置的TCP性能: iperf3 -ZVc 192.168.30.161 -t5 --get-server-output -l8192 产生800Mbit以北的传输速度,没有报告的重新传输。 始终使用以下选项启动服务器: iperf3 -sB192.168.30.161 谁该怪? Linux客户端盒(硬件?驱动程序?设置?)? 编辑:我只是将测试从一个Windows服务器盒运行到另一个,而300Mbit的UDP数据包丢失甚至更高,为22% Windows服务器框(硬件?驱动程序?设置?)? 连接所有测试机器的(单个)开关? 电缆? 编辑: 现在,我尝试了另一个方向:Windows-> Linux。结果:数据包丢失始终为0,而吞吐量最大达到大约 840Mbit -l8192,即分段的IP数据包 250MB,用于无碎片的-l1472IP数据包 我想流量控制会限制吞吐量,并防止数据包丢失。尤其是后者,无碎片的数据远不及TCP吞吐量(无碎片的TCP产生的数据与碎片TCP相似),但是在数据包丢失方面,它相对于Linux-> Windows而言是无限巨大的改进。 以及如何找出? 我确实遵循了服务器上驱动程序设置的常规建议以最大化性能,并尝试启用/禁用/最大化/最小化/更改 中断适度 流量控制 接收缓冲区 的RSS 局域网唤醒 所有卸载功能均已启用。 编辑我也尝试启用/禁用 以太网@线速 各种卸载功能 优先级和VLAN 损失率相近。 …

1
nginx if位置内的语句返回404
以下块 location / { if ($http_origin ~* (https?://[^/]*\.example\.com(:[0-9]+)?)) { add_header 'Access-Control-Allow-Origin' "$http_origin"; } try_files $uri $uri/ /index.php?$args; } …导致404,因为上述代码从未到达try_files指令,因此: 这与nginx 的IfIsEvil有关吗? 如果是,那么是否还有其他方法可以http_origin通过不使用if语句来测试? 我已经尝试使用nginx> 1.4(1.4.6,1.7,1.7.8)来进行此操作。
11 nginx  cors 

1
jenkins无法连接到git存储库
我无法以某种方式配置git存储库的URL,Jenkins可以访问它。 在“项目>配置>源代码管理”下,将存储库URL设置为“ git @ store:repositories / testproject.git” 我收到此错误: Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128: stdout: stderr: Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). fatal: Could not read from remote repository. Please make …
11 git  jenkins 

2
Docker守护程序在更新后回答``找不到404页面''
我最近将docker从1.4更新为1.5(带有包lxc_docker)。 从那时起,docker守护进程发送如下错误(针对每个命令): $ docker version Client version: 1.5.0 Client API version: 1.17 Go version (client): go1.4.1 Git commit (client): a8a31ef OS/Arch (client): linux/amd64 FATA[0000] Error response from daemon: 404 page not found 但是,如果我使用客户端的先前版本,则会得到很好的答案: $ /usr/bin/docker-old version Client version: 1.4.0 Client API version: 1.16 Go version (client): go1.3.3 Git commit (client): …

4
从电子邮件标题中删除apache @ localhost?
我的设置:我正在带有Apache Web服务器的Amazon Linux服务器(似乎基本上是CentOS)上运行Magento网站。我还使用Google Apps管理mydomain.com的邮件。 我能够成功地为服务器设置MX,SPF和DKIM记录并使它们正常工作,这样,当我发送电子邮件时,我会同时获得SPF和DKIM的“通行证”。但是,我遇到了一个奇怪的问题,我似乎无法解决---我发送的电子邮件的标头的一部分似乎总是说: Received: (from apache@localhost) by mydomain.com 我已经在上下搜索了将其更改为使用“ mail@mydomain.com”的方法,但是我似乎无法弄清楚。 在我尝试过的事情中: 将php.ini更改为:/ usr / sbin / sendmail -t -i -f mail@mydomain.com 将以下行添加到mydomain.conf的虚拟主机中:ServerAdmin mail@mydomain.com 在Magento后端中将返回路径设置为“是”(系统->配置->高级->系统->邮件发送设置。 如果有帮助,我的/ etc / hosts文件的内容如下: 127.0.0.1 www.mydomain.com 127.0.0.1 mydomain.com 127.0.0.1 localhost localhost.localdomain 对于hosts文件的最后一行,我还尝试了变体... 127.0.0.1 localhost.localdomain mydomain.com ...但是还是没用。 我认为如果添加电子邮件标头也可能会有所帮助,以防万一可以为可能发生的事情提供一些线索(我更改了很多值以使其泛化)。 Delivered-To: zerowing@email.com Received: by 123.123.123.123 with SMTP …

2
通过IPSec隧道将20M​​bps WAN限制为10Mbps
我们最近将一个远程站点从10 / 10Mbps光纤升级到20 / 20Mbps光纤链路(从光纤到地下室,然后从VDSL从地下室到办公室,大约30米)。在此站点和中心站点之间有规则的大文件副本(多gig),因此从理论上讲,将链接增加到20/20应该可以使传输时间缩短一半。 对于用于复制文件的传输(例如robocopy用于双向复制文件或Veeam Backup and Recovery的复制),传输速度上限为10Mbps。 升级前: 升级后(robocopy): 几乎相同(忽略传输时间长度的差异)。 传输通过Cisco ASA5520和Mikrotik RB2011UiAS-RM之间的IPSec隧道进行。 首先的想法: QoS-不。有QoS规则,但没有一个规则会影响此流程。我禁用了所有规则几分钟后仍然无法检查,也没有任何更改 软件定义的限制。其中大部分流量是通过Veeam Backup and Recovery现场交付的,但其中没有定义任何限制。另外,我只是进行了一次平直的比赛robocopy,看到的统计数据完全相同。 硬件无法使用。嗯,一台5520的已发布性能数据是3DES数据为225Mbps,而Mikrotik并没有发布数字,但它将超过10Mbps。在进行这些传输测试时,Mikrotik的CPU使用率约为25%-33%。(此外,通过IPSec隧道进行HTTP传输确实达到了接近20Mbps的速度) 延迟与TCP窗口大小相结合?站点之间的延迟为15 32*0.015毫秒,因此,即使是最坏的情况,32 KB窗口大小的最大值也最多为2.1 MB /秒。此外,多个并发传输仍只能达到10Mbps,不支持该理论 也许源头和目的地都是狗屎?好了,该源可以推动1.6GB /秒的持续顺序读取,所以不是那样。目标可以执行200MB /秒的连续顺序写入,因此也不是。 这是一个非常奇怪的情况。我以前从未见过如此明显的表现。 我还能去哪里? 在进一步调查中,我有信心指出IPSec隧道是问题所在。我做了一个人为的示例,并在站点上的两个公共IP地址之间直接进行了一些测试,然后使用内部IP地址进行了完全相同的测试,并且我能够在未加密的Internet上复制20Mbps,在IPSec上仅复制10Mbps侧。 以前的版本在HTTP方面有一些麻烦。忘了这个,这是一个错误的测试机制。 根据Xeon的建议,并在我要求ISP支持时由我的ISP回显,我设置了一条mangle规则,将IPSec数据的MSS降至1422- 基于此计算: 1422 + 20 + 4 + 4 + 16 + 0 + 1 + …

2
有没有一种方法可以只在RHEL7中保存防火墙?
我开始使用RHEL7,并了解一些有关systemd的更改。 有没有一种方法可以/sbin/service iptables save在firewalld中执行? $ /sbin/service iptables save The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl. 我可以从文档中找到最接近的并行度是--reload: Reload the firewall without loosing state information: $ firewall-cmd --reload 但是它没有明确说明是否保存。

2
管理多个Docker容器的IAM安全凭证
在普通EC2环境中,使用IAM角色和凭证(从实例元数据自动获取)来管理对其他AWS资源的访问非常简单。使用CloudFormation甚至更加容易,您可以在其中为实例分配特定的应用程序角色时动态创建角色。 如果我想迁移到Docker并进行某种M-to-N部署(我有M台机器,并在其上运行N个应用程序),我应该如何限制对每个应用程序AWS资源的访问?主机上的任何人都可以访问实例元数据,因此我将使每个应用程序都能够查看/修改同一部署环境中每个其他应用程序的数据。 向在这种环境中运行的应用程序容器提供安全证书的最佳实践是什么?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.