小fish 发表于 2019-1-2 14:04:27

LVS iptables wrapper xinetd 等在 CentOS上

  TCPwrapper 和xinetd都是用于控制外部对于本机service访问的,首先是wrapper判断一个包是否允许,相应允许或丢弃包。 xinetd也是wrapper要判断的service之一,如果允许再交给xinet来判断。好像有点重复了?
  hosts.allow和hosts.deny是wrapper的规则表,顺序是先读allow文件再度deny文件,如果发现一个匹配就算判断完成,而且,文件末尾不像cisco有一个deny all all的隐含规则,wrapper默认允许所有的包。
  

  用iptables做NAT服务
  最近装了ESXi,主要还是用虚拟机做实验。 因为发现ESXi没有自身的NAT功能,于是就用了一个CentOS虚拟机提供NAT服务。
  参照了howtoforge上面的文章,发现本身并不复杂,但是几个基本概念必须搞清,不然看的就不太明白。
  最重要的也就是这么两步:
  iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
  iptables --append FORWARD --in-interface eth1 -j ACCEPT
  这里eth0是外部接口,eth1是内部接口。
  然后把/proc/sys/net/ipv4/ip_forward内容改为1 就可以了。这之前当然还要查一查iptables的规则,看看是否有和NAT规则冲突的,就把它改掉。
  howtoforge网站没有对此做什么解释,所以设置好了也只是知其然不知其所以然。 后来查了文档,原来iptables规则中有三个表, filter,nat,mangle, 默认都是在filter表上操作,所以平时一般的规则修改不怎么用到nat表和mangle 表,也不会用到 -- table 选项,难怪一开始看到howtoforge的文章会感到没有头绪。
  在Linux nat中,被转发的包实际经过了以下几个 表-链 的组合
  1.mangle-- PREROUTING
  2. nat -- PREROUTING                ;用于外部访问内部网站的NAT
  3. mangle -- FORWARD
  4. filter -- FORWARD
  5. mangle -- POSTROUTING
  6. nat - POSTROUTING               ;用于内部浏览外部的NAT
  一般来说都是在 filter -- FORWARD 和 nat -- POSTROUTING 这两个组合中作规则的设定。所以在这里设置用eth0作为出口路由,对于进入eth1的转发包一律允许,当然也可以结合具体情况做一些过滤。
  centOS本身的system-config-securitylevel工具不适合做这种配置,修改了nat以后也不要再用这个工具来检查配置了, 好像是无法识别的。
  filter 表里面有3个chain,FORWARD, INPUT和 OUTPUT。
  iptables的常见选项:
  -p 指定协议-s 指定源地址 -d 指定目的地址 -i 指定入接口-o 指定出接口
  -p 指定协议后,可接着用 --sport--dport 指定端口号 --syn 表示syn 包后面可接 -m limit --limit n/s 来限定每秒SYN数量。
  扩展选项:
  -m multiport --sports   端口号同逗号分隔,不一定是连续的
  -m mulitport --dports
  -m multiport --ports
  -m --state   状态可以是 ESTABLISHEDNEWRELATED INVALID 等
  如果要让外部访问内部的某一个服务器如Web 服务器:
  iptables -t nat -A PREROUTING -p tcp -i eth0-d 外部ip --dport 80 --sport 1024:65535 -j DNAT --to 10.1.1.x:8080
  iptables -A FORWARD -p tcp -i eth0 -o eth1 -d10.1.1.x --dport 8080 --sport 1024:65535 -m state --state NEW -j ACCEPT
  iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
  

  LVS做NAT服务,这里我只做了简单的双机NAT设置,把对外的一个虚拟公网IP重定向到内部的web服务器群。基本上只要piranha上面配置好,sysctl里面ipforward置1,然后iptables里面要加
  iptables -I FORWARD -i eth1 -s 内部IP范围 -j ACCEPT
  iptables -I INPUT 允许80端口进入,为了性能就不要检查是不是NEW的了
  这样就能让外面的访问到web服务器。iptables不加的话是不行的,但是好像红帽的文档里没有提。




页: [1]
查看完整版本: LVS iptables wrapper xinetd 等在 CentOS上