用Linux作NAT的简单例子


类型:LinuxApp,创建时间:Dec. 31, 2011, 5:13 p.m.

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/34/。

今天闹了一个笑话。我居然说启用IP_FORWARD之后就是NAT了。

很多有两台电脑的朋友应该都会想怎么样让自己的两台电脑都连上网。 如果其实有一台是WINDOWS的机器,应该是很简单的。只要保证直接连网的机器有两个网卡,然后做一个"Internet连接共享"就可以了。

Linux的机器就比较麻烦一些了。因为Linux下图形界面的工具基本太少。只能用命令来做。同样也是在直接连网的机器(称为Router吧,另一台机器则称为C吧)上安装两个网卡。配置好网络之后,分为三步(都需要root权限):

  1. 启用IP转发。方法是在Router里输入:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  2. 做个NAT。命令是:

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 10.0.1.0/24 -o eth1 -j MASQUERADE
    

    这条命令比较复杂,/sbin/iptables -t nat -A POSTROUTING是固定的,说明这条命令是做NAT的。

    -s 192.168.1.0/24是指你的两条机器形成的内部网络的网络地址。也可以写成192.168.1.0/255.255.255.0。这两种写法是一样的,详细情况可以Google一下无类IP地址。

    -d 10.0.1.0/24则是外面网络的地址。如果写上这个,表示内部网络的机器只能访问10.0.1.0/24这个网段。通常就不必写了。

    -o eth1,表示凡是满足条件的数据包都转到第2个网络接口上。

    -j MASQUERADE是固定的。。

  3. 在机器C上把默认网关写成Router的IP。

搞定。。

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/34/。


暂时还没有任何评论。


何不来发表一下您对本文的看法(使用Markdown语法,分段空两行):