linunx系统做网关(具有一个公网地址)

测试环境
1 一台双网卡装有两块网卡的linux系统服务器
2  分别配置两块网卡的地址    eth0 (内网)   eth1(公网)
     编辑 eth0       网卡内容为
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.3
NETMASK=255.255.255.0
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
3 编辑 eth1   网卡内容为
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=124.207.47.150  (isp商获取)
NETMASK=255.255.255.252(isp商获取)
GATEWAY=124.207.47.149(isp商获取)
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no

4 /etc/resolv.conf 如果配置了DNS 那么地址就写127.0.0.1 如果没有 那么需要从isp获取  如果做网关服务器,建议安装dns缓存服务器,直接安装bind 基本上都不要配置
5 最好还配置Dhcp服务器,  具体配置可以参照 http://lubing.blog.51cto.com/5293532/910903另外 dncpd.conf 文件可以是参照下面
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
              range 192.168.0.110 192.168.0.140;
              authoritative;
              default-lease-time 36000 ;
              max-lease-time 31536000;
              filename "pxelinux.0";
              #filename "pxeboot";
              #option root-path "192.168.0.3:/var/www/html/FB62-64BIT/disc1"; 
              option subnet-mask 255.255.0.0;
              option broadcast-address 192.168.0.255;
              option routers 192.168.0.3;
              option domain-name-servers 192.168.0.3,219.232.224.114;
              option domain-name "51.net";
4 启动dns 和dhcp服务      并打开iptables 的转发功能
编辑   /etc/sysctl.conf  修改
net.ipv4.ip_forward=1
   net.ipv4.conf.default.rp_filter=1
   kernel.sysrq=0 
然后直接 输入echo 1 >/proc/sys/net/ipv4/ip_forward
5  设置iptables  把下面内容保存成一个文件,修改权限 再执行这个脚本
TMP=/sbin/iptables
LSMOD=/sbin/lsmod
# Removing old rules
$TMP -F
$TMP -t nat -F
#First set some default policies
#$TMP -A INPUT -j DROP
#$TMP -A OUTPUT -j DROP
#$TMP -A FORWARD -j DROP
# Your IP
NET=124.207.47.150
# Starting Masq and Forwarding
echo '1'> /proc/sys/net/ipv4/ip_forward
/sbin/iptables --table nat --append POSTROUTING -o eth1 -j MASQUERADE
/sbin/iptables --append FORWARD --in-interface eth0 -j ACCEPT
# RESTART KLOGD (So we dont get flooded by iptables to tty)
killall -9 klogd
/sbin/klogd -x -c 3

arp -f /root/songquan/717ipmaclist

也可以使用下面的iptables命令设置
iptables -A FORWARD -i eth0 -j ACCEPT 
iptables -t nat  -A POSTROUTING -o eth1 -j MASQUERADE 
也可以试试这个 没有测试过(iptables -t nat -A POSTOUTING -S 192.168.0.0/24 -o eth1 -j MASQUERADE 其实跟上面的差不多)
重启iptables 就可以了
上述做完后基本就可以实现局域网上网了!!
iptables -A INPUT -i eth1 -p tcp -m multiport --dports 139,445 -j DROP 
iptables -A INPUT -i eth1 -p udp -m multiport --dports 137,138 -j DROP  关闭 eth1的有些端口
如果局域网中有配置了一台web服务器端口是默认的80, 要求外面用户能访问这个台web服务器,那么需要在增加两条规则
iptables -t nat -A POSTROUTING -s 192.168.0.1 -o eth1 -p tcp -m multiport --sports 80 -j SNAT --to-source 124.207.47.150:80
iptables -t nat -A PREROUTING -d 124.207.47.150 -i eth1 -p tcp -m multiport --dports 80 -j DNAT --to-destination 192.168.0.1:80 
/etc/init.d/iptables restart就可以了。

你可能感兴趣的:(linunx)