linux实现共享上网


练习iptables的使用,实现linux下的双网卡共享上网。

环境:

windows xp 作为局域网客户机
redhat linux  作为网关


步骤:

因为我只有一台电脑,又要模拟两块网卡,所以我在xp装了一个virtualPC,装的是linux系统。又到网上找了一个 Linux单网卡双IP的的配置。照着做:

#cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1

并把内容改一下:

DEVICE=”eth0:1″
IPADDR=”192.168.0.1″
BROADCAST=”192.168.0.255″
NETMASK=”255.255.255.0″
ONBOOT=”yes”


重启一下网卡:

/etc/init.d/network restart

[提示] 用ifup eth0:1不起作用,ping不通。请用network restart


配置Linux的NAT和ip_forward:  这里我直接从网上找了一个scripts。非常好用。

java 代码
 
  1. #!/bin/sh  
  2. # Name: nat.sh  
  3. # Author: Bixuan  
  4. # Date: 2003/04/04  
  5.   
  6. echo "Your user the iptables firewall.";  
  7. ETH="eth0"  #有外网IP的网卡
  8. SRC="192.168.0.0/24" # 内网地址段  
  9.   
  10.   
  11. case $1 in  
  12.    start)  
  13.        echo 1 > /proc/sys/net/ipv4/ip_forward  
  14.        /sbin/modprobe ip_tables  
  15.        /sbin/modprobe iptable_filter  
  16.         /sbin/modprobe iptable_nat  
  17.         /sbin/modprobe ip_conntrack  
  18.         /sbin/modprobe ip_conntrack_ftp  
  19.         /sbin/modprobe ip_nat_ftp  
  20.         /sbin/iptables -F INPUT  
  21.         /sbin/iptables -F FORWARD  
  22.         /sbin/iptables -F POSTROUTING -t nat  
  23.         /sbin/iptables -P FORWARD DROP  
  24.         /sbin/iptables -t nat -A POSTROUTING -o $ETH -s $SRC -j MASQUERADE  
  25.         /sbin/iptables -A FORWARD -i $ETH -m state --state ESTABLISHED,RELATED -j ACCEPT  
  26.         /sbin/iptables -A FORWARD -s $SRC -j ACCEPT  
  27.         echo "Nat is strating ...... [ OK ]"  
  28.         ;;  
  29.    stop)  
  30. echo 0 > /proc/sys/net/ipv4/ip_forward  
  31.        ;;  
  32.     *)  
  33.         echo $"Usage: $0 {start|stop}";  
  34. esac  



把上面的scripts存起来nat.sh执行一下
#chmod u+x nat.sh
#./nat.sh

再配置局域网的机器如下配置:

ip: 192.168.0.x 
netmask: 255.255.255.0
gw: 192.168.0.1
dns: 你的dns,我是网通,我配的是202.106.0.20


测试机器连通:

ping 192.168.0.1
ping www.163.com

都正常的话,再打开firefox上网,一切OK. 操练结束。


[提示]:
如果是真实环境,linux有双网卡,那么设置eth0为外网IP,eth1为192.168.0.1的内网IP。如果你本机不一定,修改ETH=为你的外网网卡标识。 一般是eth0,eth1


虽然是成功配置好了,但是我对 MASQUERADE和forward 那一句还是不理解,响应包的source然道是192.168.0.x? 不然网关怎么知道转给谁?

参考:

1.  man iptables
2.  google search with keyword "iptables共享上网" 
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值