如何使用Linux连接内部网和公网(示例)

如何使用Linux连接内部网和公网(示例)

一、安装一台Linux。(这是必需的)
二、启动NAT功能(IP地址转换)
1、安装双网卡,现在假定公网地址是172.1.1.1(其实也是保留地址),连接到eth1上,内部网地址是192.168.0.1,连接到eth0上。配置好两个网卡的地址。
2、配置NAT脚本,注意要将external_interface=172.1.1.1 这行中的172.1.1.1
改为ISP提供给你的IP地址。
vi /etc/rc.d/rc.nat加进如下内容:
#!/bin/sh
#above line MUST be the first line of rc.nat
echo "Starting IP NAT service . . . "

# refresh all firewall rules
/sbin/ipchains -F forward
/sbin/ipchains -F input
/sbin/ipchains -F output

# setup default firewall rules
/sbin/ipchains -P forward DENY
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -P output ACCEPT

#put the addr of the eth port connect to public-net
#here we use eth1 connect to public-net
external_interface=172.1.1.1

# setup Loopback interface
/sbin/ipchains -A input -j ACCEPT -i lo
/sbin/ipchains -A output -j ACCEPT -i lo

# disabling IP spoofing
#refuse the ip input from ether 0
/sbin/ipchains -A input -j DENY -i eth1 -s 192.168.0.0/16
/sbin/ipchains -A input -j DENY -i eth1 -d 192.168.0.0/16
/sbin/ipchains -A output -j DENY -i eth1 -s 192.168.0.0/16
/sbin/ipchains -A output -j DENY -i eth1 -d 192.168.0.0/16

#refuse from ether port connect to net
/sbin/ipchains -A input -j DENY -i eth1 -s $external_interface/32
/sbin/ipchains -A output -j DENY -i eth1 -d $external_interface/32

#refuse packets claiming to be to or from the loopback interface
/sbin/ipchains -A input -j DENY -i eth1 -s 127.0.0.0/8
/sbin/ipchains -A input -j DENY -i eth1 -d 127.0.0.0/8
/sbin/ipchains -A output -j DENY -i eth1 -s 127.0.0.0/8
/sbin/ipchains -A output -j DENY -i eth1 -d 127.0.0.0/8

#refuse broadcast address source packets
/sbin/ipchains -A input -j DENY -i eth1 -s 255.255.255.255
/sbin/ipchains -A input -j DENY -i eth1 -d 0.0.0.0

#refuse multicast/anycast/broadcast address
/sbin/ipchains -A input -j DENY -i eth1 -s 240.0.0.0/3

#forwarding all internal traffic
#for each subnet add a rule to below
/sbin/ipchains -A forward -j ACCEPT -i eth1 -s 192.168.0.0/24 -d 192.168.0.0/24

# deny ping, if enable then refuse ping packet
# ipchains -A input -j DENY -i eth1 -p icmp

#setup IP Masquerading rules
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_vdolive

#starting IP masquerading
#for each subnet add a rule below
/sbin/ipchains -A forward -j MASQ -i eth1 -s 192.168.0.0/24

#-----------------------------------------------------------------
#end

3、chmod 550 /etc/rc.d/rc.nat
   chown root /etc/rc.d/rc.nat
   chgrp root /etc/rc.d/rc.nat

4、在/etc/rc.d/rc.local或其他合适的rc文件中加进一行:
/etc/rc.d/rc.nat

5、执行一次/etc/rc.d/rc.nat(最好重新启动机器看看是否启动自动执行)。

二、如果企业内部网需要启用dhcp(自动为内部网每台终端自动分配IP),步骤如下:
1、vi /etc/dhcpd.conf 内容如下:
#Filename: /etc/dhcpd.conf
shared-network my-company-private-net {
  subnet 192.168.0.0 netmask 255.255.255.0 {
    #define the range of IP that apply to each computer
    #the max range is 192.168.0.2-192.168.0.254
    #here we define with 50-199
     range 192.168.0.50 192.168.0.199;
    #default lease time (second),here we define with 4 hours
     default-lease-time 14400;
    #max lease time we define with 1 day
     max-lease-time 86400;
    #specify the netmask of this subnet
     option subnet-mask 255.255.255.0;
    #specify the gateway
     option routers 192.168.0.1;
     option domain-name-servers 202.96.134.133;
     option domain-name-servers 202.96.128.68;
     option domain-name "my-company-private-net.net";
  }
}
#-----------------------------------------------------------------
#end

2、创建一个空文件/var/state/dhcp/dhcpd.leases
echo '' > /var/state/dhcp/dhcpd.leases

3、用ntsysv启动dhcp服务,因为这里我们使用eth0为内部网接口,是dhcpd的缺省使用eth口,因此不必更改dhcp服务的启动脚本。

4、所有终端将TCP/IP属性更改为“自动获得Ip地址”即可,所有参数都不必指定就可以上网了。
      
我们公司是通过ADSL接入的,大家通过共享连接接入Internet,网关是win2000,
我有一台Linux的服务器,听说使用代理软件可以让internet用户访问内部网络机器的。应该怎么配置呢?谢谢!      
用iptables吧,ipchains已经太土了      
有人知道怎么解决我的问题吗?谢谢!      
[QUOTE]最初由 yjiangliang 发布
[B]有人知道怎么解决我的问题吗?谢谢! [/B][/QUOTE]

访问呢的www server倒是可以的,ipchains也可以做到,但是完全达到路由器的那种一对一nat效果就不行了      
iptables各种NAT都能做      
网关是一台win2000的服务器,内部linux假如作为ftp服务器通过网关出去,这样也能访问吗?在网关上又如何设置呢?