分享
 
 
 

使用iptables设定使用NAT分享网络频宽

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

作者: kenduest (小州)

Linux 上使用 IP-Masquerade 所谓的 IP ?装以便于达成该功能。

Linux 上的 IPMASQ 因为 kernel 一些核心功能有调整过,所以相关的设定工具

因为不同的核心版本所以不同.

kernel 2.0.x 时代,是使用 ipfwadm 程序。(这个说法不算是完全正确)

kernel 2.1.x/2.2.x 时代,则是使用 ipchains 程序

kernel 2.3.x/2.4.x 时代,使用 netfilter 过滤机制, 是使用

iptables 程序。

演进来看,目前 kernel 2.4 配合使用 netfilter 核心过滤机制,

可以达到的功能相当棒.... 那 netfilter 提供那些机制呢?

比方:

1. 传统 ipchains 的任何功能(基本来源与目的封包过滤、导向、伪装)

2. 提供 Source NAT 与 Destination NAT 的功能

3. 可以针对特定使用者、群组、PID 等限制网络连结的过滤存取

4. 可以设定封包在 Routing Table 进出前时先预先处理

5. 提供可以让 UserSpace 的程序处理 filter 部分。

6. 可以针对外面自动建立、与现有联机有关这类联机过滤处理...

7. 可以针对 Mac 卡号处理。

ipmasq 的文件,那边可以阅读呢? linux 本身提供的 howto 很足够了...

使用 ipfwadm/ipchains 等程序的 kernel 环境,可以参考:

http://www.linux.org.tw/CLDP/IP-Masquerade-HOWTO.Html

不过该版文件中文翻译已经太久没有更新了,建议找原文的

IP-Masquerade-HOWTO 文件。那边找呢?可以上这里找找:

http://www.linuxdoc.org

里面提到了包含 port forward 等相关重要的信息。比方

ipmasqadm 等程序的使用。

若是您目前使用 kernel 2.3/2.4,可以参考这给篇中译文:

http://www.linux.org.tw/CLDP/NAT-HOWTO.html

http://www.linux.org.tw/CLDP/Packet...ring-HOWTO.html

相同的,原文部份,上 http://www.linuxdoc.org 也有喔..

当然,若是您的 linux dist 版本是最近的,那系统安装好的

HOWTO 文件应该也可以找到..

ok.. 若是您目前要使用 nat 功能的话,首先就是确定您的核心是支持

linux firewall 与 ip masquerade 功能... 不过目前许多 Linux

Distribution 都已经把 IP Masquerade 支持编入到 kernel 内了,

所以重编 kernel 的部份可以略过....

当然啦,目前 kernel 2.4.0 正式 release 出没有多久,所以若是

您打算使用 netfilter 提供的一些先进的机制,那您需要先更新

核心到 2.4,编译核心时要选择把 netfilter 提供的一些功能打开..

(可以选择编入核心 或者是编译成为 module)

这里环境,假设:

对外 internet 连结的 ip 是: 210.1.1.1

对内的部份,使用 192.168.1.1

当然,您需要两张网络卡,一张就是设定 210.1.1.1,另外一张

就是设定 192.168.1.1 (netmask: 255.255.255.0)

另外提到,有人会说到也许可以使用 ip aliases 达到一张网络卡

就可以有两个 ip .. 当然,这是可行的.. 不过弟不建议使用在

nat 的环境下.. 一者是因为一般 nat 多半充当 firewall,而

若是使用 ip aliases 后对外与对内的封包都跑在同一个 interface

上,那就失去封包过滤功能了... 而不同区段的封包跑在一起,网络

效能也是会变差的...

OK.. 目前要激活 nat/ipmasq 功能的话,首先就是只要 Linux 主机把

IP Forwarding 打开 (ip 转送),并使用 ipchains/iptables 等这类程序

设定好后,Client 端就可以透过 Linux 这台 gateway 主机的协助而上网了。

kernel 2.2.x :

echo "1"

/proc/sys/net/ipv4/ip_forward

ipchains -P forward DENY

ipchains -A forward -i eth0 -j MASQ -s 192.168.1.0/24

ipchains -M -S 86400 86400 360

modprobe ip_masq_FTP

当然,我想另外的一些 ipmasq module 一起挂入也许比较完整一点...

ip_masq_cuseeme、ip_masq_irc、ip_masq_mfw、ip_masq_pptp、

ip_masq_quake、ip_masq_raudio、ip_masq_user、ip_masq_vdolive ..

kernel 2.3.x/2.4.x :

echo "1"

/proc/sys/net/ipv4/ip_forward

modprobe ip_tables # 这是编译核心是选择 module 才需要

modprobe ip_nat_ftp # 同上,处理 ftp 等连结问题

modprobe ip_conntrack

modprobe ip_conntrack_ftp

modprobn ip_conntrack_irc

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE

上面等使用上,请先注重各位系统目前预设每个 INPUT、OUTPUT、FORWARD CHAIN

是不是为 ACCEPT ,而不是 DROP/DENY 或者是 REJECT。

for kernel 2.2 :

ipchains -P input ACCEPT

ipchains -P output ACCEPT

ipchains -P forward ACCEPT

若是要把就有规则清除,可以补上:

ipchains -F

ipchains -X

for kernel 2.4 :

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

若是要把就有规则清除,可以补上:

iptables -F

iptables -X

iptables -F -t nat

iptables -X -t nat

上面很单纯的提供 nat/ipmasq 服务,没有针对一些安全性考量,比方

声称来自内部网络的 ip 范围,是由 eth0 这个对外 interface 进入的话那就

应该拒绝.... 比方像是位于 eth1 上 192.168.1.x 这段虚拟 ip 区段就

是一个例子。所以这里要说的是,若是要严谨一点的话,额外的设定是很需要的...

另外补充的,就是 port forward 部份,kernel 2.2.x 内是使用

ipmasqadm 达成:

ipmasqadm portfw -a -P tcp -L 210.1.1.1 25 -R 192.168.1.100 25

该 ipmasqadm 叙述,提供让 nat 对外主机,可以让他人使用

210.1.1.1 port 25 进行 tcp 服务连结,而该连结请求会转给内部主机

192.168.1.100 port 25 .. 简单说,这行叙述是给有一台 mail server

是放在 nat 架构内使用虚拟 ip,然后透过 nat 主机设定 port 重导

到内部的真实主机。

若是使用 kernel 2.4 的话,iptables 指令则是:

iptables -A PREROUTING -t nat -p tcp -d 210.1.1.1 \

--dport 25 -j DNAT --to 192.168.1.100:25

当然,以前有人提到,外面使用 telnet 210.1.1.1 25 的确是可以 work,

不过内部 192.168.1.x 的计算机若是 telnet 210.1.1.1 25 就不行..

那补上下面的叙述:

iptables -A OUTPUT -t nat -p tcp -d 210.1.1.1 \

--dport 25 -j DNAT --to 192.168.1.100:25

上面说的是单一 port 重导.. 若是需要的功能是全部 port 都

重导的话,比方就是使用:

iptables -A PREROUTING -t nat -p all -d 210.1.1.1 \

-j DNAT --to 192.168.1.1

ok.. 此外几点要说明的是:

1. 目前许多人都使用 adsl 宽频,若是使用计时制的话要注重的是,

因为透过 pppoe 这类程序拨接后,会产生一个 ppp0 的 interface,

然后再透过一个网络卡接口作封包的传输,所以先前的指令有指定

eth0 的叙述要改成 ppp0 才正确....

2. 使用 nat 后,使用虚拟 ip 连上网络的计算机,一般使用上应该是

不大会有问题的... 不过若是想与 internet 上的计算机玩网络

游戏对战的话,可能会发生一些问题.... 因为许多 game 的网络联机

的运作方式在 nat 架构下多半无法工作.... 一般解决方式,找看看

是否有专人写出了 ipmasq 的 module,挂入后就可以解决了...

或者是找出相关的 game 是有那些 port 的连结,然后设定好 port

forwarding 的动作即可。

关于 port forwarding 部份,这里有个连结提供很好的信息:

http://www.tsmservices.com/masq

许多 ap 程序、game 等等都有提供相关解决设定,不过都是针对

kernel 2.2.x 内配合使用 ipmasqadm 程序.. 若是是使用 kernel 2.4

的话,研究一下 iptables 指令的用法后,同样也是可以完成的。

3. 有人无法使用 icq 传档案,甚至无法正确传讯息?我建议更新

icq 到 2000 等版本,然后把连结设定改成在 firewall 后面

使用,那就没有问题了...

4. 要观察目前设定规则,请使用 iptables -L 。若是当初有使用 -t xxxx

的话,请使用 iptables -L -t xxx 。ex: iptables -L -t nat

5. 先前 netfilter 核心机制有一些 bug (Connection State,Related state

bug) 会导致一些安全性的问题,see:

http://www.tempest.com.br/advisories/01-2001.html

http://netfilter.samba.org/secu

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有