您的位置: 旅游网 > 生活

Linux2.4内核中iptables新增功能(2)_a

发布时间:2020-01-16 15:01:13

上面的这行在iptables中仅仅是指任何本网段的机器当目标就是防火墙时被拒绝,但绝不影响NAT和转发包, 这在以前的ipchains中是不可能的。

3. 透明代理和端口转发功能的轻松实现

a. 端口转发

在linux 2.4内核中,NAT分为 SNAT(源NAT)和DNAT(目的NAT)。我们可以利用SNAT和DNAT轻松地实现透明代理,重定向和端口转发功能。

假定某公司的网络结构如下图:

10.0.0.2

PC | (10.0.0.1)eth1| |eth0(1.2.3.4), eth0:0(1.2.3.5)

B|___|_ ___________________|防火墙 |---------Internet

(LAN: | 10.0.0.0/24) | A

_______

_____

C | Linux POP3 server

_____| IP: 10.0.0.3 gw: 10.0.0.1

当一个包被路由,转发后送出之前进行源地址改写,源地址改为1.2.3.5(防火墙上的别名IP)

iptables -t nat -A POSTROUTING -s 10.0.0.3 -o eth0 -j SNAT --to 1.2.3.5

IP伪装是SNAT的特例,当需要伪装时,其实不需要外界主动对源地址进行请求。而上面的例子是指局域网内部有一台Linux POP3服务器,IP为10.0.0.3, 网关为10.0.0.1,且在防火墙外部网卡上绑定一个IP别名1.2.3.5,作为该POP3服务器对外界联系的出去的源IP地址。对外部用户来说(公司员工在外出差),这个IP 1.2.3.5就是POP3服务器的IP地址,当向这个IP请求时我们用DNAT送到10.0.0.3上从而实现端口转发的功能。

iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.5 -j DNAT --to 10.0.0.3

则这两行规则即可实现端口转发的功能。

b. 透明代理(重定向)

最常见的透明代理的使用是结合开放源代理软件Squid,实现局域网内用户在不用设置任何浏览器代理

的条件下透明地使用代理上网。 如果我们的Squid的HTTP端口运行在 3333,则使用下面的规则:

iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.0.0.0/24 --dport 80 -j

DNAT --to 10.0.0.1:3333

而且还必须设置Squid 2.3 或者2.4 版本中的squid.conf如下:

http_port 3333

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

这样,局域网内的用户即使不设置任何代理,也同样是利用了Squid的代理上网。

四 常见问题解答

a. 在运行中的防火墙规则如何保存下来,供redhat的ntsysv中的iptables服务使用?

使用 iptables-save和iptables-restore保存为文件/etc/sysconfig/iptables,再用ntsysv启动iptables服务使用

b. 我能同时使用ipchains和iptables吗?

不行。在使用iptalbes之前,你必须停止ipchains及任何内存中的与ipchains相关的模 块,用/sbin/lsmod 检查所有ipchains模块,用/sbin/rmmod逐一删除,最后再运行iptables规则。

治疗勃起功能障碍进口药物
哪些草药可以消肿止痛
增生性关节炎的形成原因是什么
儿童咳嗽专用药疗效好吗
猜你会喜欢的
猜你会喜欢的