|
|
※阅读文章※ |
利用端口转发由内部网对外提供网络服务作者:吴阿亭 [文章出自: www.fanqiang.com] 1. 图例如下: INTERNET | (194.160.1.1) linux box (firewall) | (192.168.11.5) +--------------------------+ internal ethernet | (192.168.11.2) | (192.168.11.3) linux box 1(WWW) linux box 2 (POP3) 2.什么是转口转发(port forwarding)? 当外部一拨号用户拨到当地ISP后,在浏览器中指定地址如www.yourcompanydomain.com (194.160.1.1)时或者在outlook express中指定POP3服务器为pop.yourcompandomain.com (194.160.1.1)时,你的防火墙(图中的linux box)然后转发这个包到内部服务器WWW 或POP3,当内部服务器生成回复包朝外发出经过防火墙时,包被重写。具体过程如下: 在防火墙上,我们设置端口转发规则,指定所有到防火墙外部地址194.160.1.1的TCP连接, 且目的端口为80的所有连接,重定向到内部机器192.168.11.2的端口80。假定任意一外部 连接进来的主机IP为 163.158.1.2。 则源和目的地址及端口号分别为 Source: 163.158.1.2/7890 Dest: 194.160.1.1/80 被转发到内部主机,重写目的地址部分 Source: 163.158.1.2/7890 Dest: 192.168.11.2/80 由内部主机回复后的包为: Source: 192.168.11.2/80 Dest: 163.158.1.2/7890 再经过防火墙时源地址被重写 Source 194.160.1.1/80 Dest: 163.158.1.2/7890 3.如何在Linux 2.2.x中使用端口转发? a.如果你用最近的redhat 内核,已经有一个端口转发模块提供了。 为了用它,运行 #modprobe ip_masq_portfw 如果你用最新的不是redhat提供的内核RPM包,则需要在编译内核时 启动下面的项目: CONFIG_EXPERIMENTAL CONFIG_IP_MASQUERADE CONFIG_IP_MASQUERADE_IPPORTFW b.然后下载ipmasqadm RPM包。 ftp://ftp.redhat.com/pub/contrib/libc6/i386/ipmasqadm-0.4.2-3.i386.rpm c.启动下面的IP转发和中转链设置: #ipchains -P forward DENY #echo 1 > /proc/sys/net/ipv4/ip_forward d. 如果是专线上网,则用下面的命令设置IP伪装规则 #ipchains -A forward -j MASQ -s 192.168.11.2/32 #ipchains -A forward -j MASQ -s 192.168.11.3/32 如果是拨号上网,则用 #ipchains -A forward -i ppp0 -j MASQ e.最后启动端口转发规则 #ipmasqadm portfw -a -P tcp -L 194.160.1.1 80 -R 192.168.11.2 80 #ipmasqadm portfw -a -P tcp -L 192.160.1.1 110 -R 192.168.11.3 110 4.应注意的问题: a. 对于pop3,telnet等协议设置端口转发时,注意检查 /etc/hosts.allow and /etc/hosts.deny文件允许外部世界的任意地址都可连接进来 b. 内部机器的网关必须设成防火墙机器的内部那块网卡的地址 5.端口转发的优势 a.在IP层内核一级处理包重写,更加稳定可靠,速度更快 b.你可以在防火墙外部地址上使用IP别名处理更多的端口转发请求,若内部机器有不止一台WWW服务器 可以这样做,对不同的别名IP转发到不同的内部主机 c.减少防火墙上在用户空间运行的应用程序 Jephe Wu 文章加入时间: 2004-11-17 14:49:36 责任编辑: w9 (2584 人次查阅) |