如何让外网访问内网搭建的www服务器

来源:互联网 发布:数据库如何建表 编辑:程序博客网 时间:2024/05/22 16:04
外网访问内网的主机,内网任何一台主机都可以搭建www服务器让外网访问;内网主机既可以动态获取ip访问外网,也可以手动设置ip访问外网!

一,搭建nat服务器实现内网与外网相互访问;
二,搭建dhcp服务器便于对内网主机网络参数的管理(适合于内网主机较多的情形);
三,在内网主机上搭建www服务器(这里是在"192.168.1.80"主机上);
以下是具体实现过程:
(eth1为外网接口,etho为内网接口)
在/bin下新建nat.sh,内容如下:
/*****   nat.sh   *****/

#!/bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#INET_IF="ppp0"
INET_IF="eth1"
LAN_IF="eth0"
INET_IP="218.198.18.56"#(根据具体网络环境设定)
WWW_IP="192.168.1.80"#(搭建www服务器的内网主机)
LAN_IP_RANGE="192.168.1.0/24"
IPT="/sbin/iptables"
TC="/sbin/tc"
MODPROBE="/sbin/modprobe"

$MODPROBE ip_tables

$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_nat_irc
$MODPROBE ipt_mark
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE ipt_MASQUERADE

for TABLE in filter nat mangle ; do
$IPT -t $TABLE -F
$IPT -t $TABLE -X
$IPT -t $TABLE -Z
done

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT

# 拒绝INTERNET客户访问
$IPT -A INPUT -i $INET_IF -m state --state RELATED,ESTABLISHED -j ACCEPT
#$IPT -A INPUT -i $INET_IF -p tcp -s 123.5.0.0/16 --dport 22 -j ACCEPT
#$IPT -A INPUT -i $INET_IF -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i $LAN_IF -p udp --dport 67 -j ACCEPT
$IPT -A INPUT -i $INET_IF -m state --state NEW,INVALID -j DROP

for DNS in $(grep ^n /etc/resolv.conf|awk '{print $2}'); do
$IPT -A INPUT -p tcp -s $DNS --sport domain -j ACCEPT
$IPT -A INPUT -p udp -s $DNS --sport domain -j ACCEPT
done

# anti bad scaning

$IPT -A INPUT -i $INET_IF -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A INPUT -i $INET_IF -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A INPUT -i $INET_IF -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A INPUT -i $INET_IF -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A INPUT -i $INET_IF -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A INPUT -i $INET_IF -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

$IPT -t nat -A PREROUTING -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $WWW_IP:80
#(以上这条规则很重要,实现外网通过80端口访问内网www服务器)
if [ $INET_IF = "ppp0" ] ; then
$IPT -t nat -A POSTROUTING -o $INET_IF -s $LAN_IP_RANGE -j MASQUERADE
else
$IPT -t nat -A POSTROUTING -o $INET_IF -s $LAN_IP_RANGE -j SNAT --to-source $INET_IP
fi

nat服务器搭建完毕!把/bin/nat.sh添加到rc.local中实现开机启动!

接着搭建dhcp服务器让内网主机自动获取ip,修改dhcpd.conf,内容如下:
/*****   dhcp   *****/

ddns-update-style interim;
ignore client-updates;

subnet 192.168.1.0 netmask 255.255.255.0 {

# --- default gateway
    option routers            192.168.1.254;#(内网网关)
    option subnet-mask        255.255.255.0;

#    option nis-domain        "domain.org";
#    option domain-name        "domain.org";
    option domain-name-servers    211.84.160.8, 202.102.224.68;#(域名服务器,根据具体网络环境设定)

    option time-offset        -18000;    # Eastern Standard Time
#    option ntp-servers        192.168.1.1;
#    option netbios-name-servers    192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#    option netbios-node-type 2;

    range dynamic-bootp 192.168.1.100 192.168.1.200;#(内网ip的范围)
    default-lease-time 21600;
    max-lease-time 43200;

    # we want the nameserver to appear at a fixed address
#    host ns {
#        next-server marvin.redhat.com;
#        hardware ethernet 12:34:56:78:AB:CD;
#        fixed-address 207.175.42.254;
#    }
}

重启dhcp服务器!看是否成功!若不成功,说明配置文件有误!

剩下的工作就是在内部主机上搭建www服务器,需要说明www服务器在这里是192.168.1.80这台主机!







<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(610) | 评论(0) | 转发(0) |
0

上一篇:linux 中命令yum的用法

下一篇:bashrc与profile的区别

相关热门文章
  • linux 常见服务端口
  • xmanager 2.0 for linux配置
  • 【ROOTFS搭建】busybox的httpd...
  • openwrt中luci学习笔记
  • 什么是shell
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0
原创粉丝点击