论坛风格切换切换到宽版
  • 644阅读
  • 8回复

[问题求助]问个问题,路由和NAT能不能做到一台linux上? [复制链接]

上一主题 下一主题
离线ygmgc.
 
发帖
2047
C币
-235976
威望
369
贡献值
1
银元
-4
铜钱
4604
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
最少要几个网卡啊?

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线areyousure.
发帖
1992
C币
-199332
威望
360
贡献值
1
银元
-1
铜钱
4442
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
情况是这样:公司接入一条光纤,从光猫转出一根网线,但是接入商不提供网关,只提供路由连接地址(172.16.1.2)和默认路由(172.16.1.1),要求接我们的路由设备,另外还给了一段公网IP,例如(211.0.0.2--211.0.0.9)
我们没路由器,只好用一台双网卡linux(eth0是172.16.1.2,eth1是211.0.0.2)做路由,开启IP转发和添加默认路由172.16.1.1
然后eth1接一个交换机A,同时交换机A接几个跑公网服务的机器(例如211.0.0.8跑web、211.0.0.9跑mail)
当然,内部要上网,又用另一台双网卡linux(eth0是211.0.0.3,eth1是192.168.0.1)iptables做NAT,网关填211.0.0.2,eth0也接交换机A,eth1接交换机B。
交换机B下接一堆要上网的客户机(192.168.0.2--192.168.0.255)。

我想能不能用一台机器同时做路由和NAT,这样是不是要4个网卡?
eth0(172.16.1.2) eth1(211.0.0.2) eth2(211.0.0.3) eth3(192.168.0.1)

[ 本帖最后由 chinaglwo 于 2007-9-16 01:11 编辑 ]

发帖
2021
C币
-132535
威望
366
贡献值
1
银元
-3
铜钱
4503
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
最少一块网卡就可以,做单臂路由(NAT)
通过一块网卡绑定多个 IP 来实现
还有一个就是概念问题,有路由未必有 NAT,有 NAT 必有路由,所以你问路由和 NAT 能否同时做到一台 Linux 上是没道理的
具体如何做置顶有文章可以参考,若中途遇到问题可以来问

离线ppcynt.
发帖
1965
C币
-61033
威望
340
贡献值
1
银元
-4
铜钱
4335
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
老大这么晚还不睡,呵呵,我也在做测试

离线frt0502.
发帖
2022
C币
-132196
威望
355
贡献值
1
银元
-2
铜钱
4484
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
我用了三个网卡
eth0(172.16.1.2) eth1(211.0.0.2)eth3(192.168.0.1)
route add default gw 172.16.1.1
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 211.0.0.2
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

192.168.0.0/24网段的机器 ping不出去,也上不了网,但是211.0.0.9是个web服务器可以上网,而且从internet外面可以ping到211.0.0.9

离线大狼.
发帖
1986
C币
4898
威望
372
贡献值
0
银元
-1
铜钱
4528
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
route add default gw 172.16.1.1
为什么?

离线hahasky.
发帖
2098
C币
-152332
威望
389
贡献值
1
银元
-2
铜钱
4637
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
两个网卡比较好

eth0 172.16.1.2
eth1 192.168.0.1

route add default gw 172.16.1.1

echo 1 > /proc/sys/net/ipv4/ip_forward
复制代码
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 211.0.0.2
复制代码

这样内部就可以上网了

如果你有服务需要对外提供
假设web服务器是192.168.0.100,而且需要对外的IP是211.0.0.9
那么:
iptables -t nat -A PREROUTING -i eth0 -d 211.0.0.9 -j SNAT --to 192.168.0.100

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.100 -j SNAT --to 211.0.0.9

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 211.0.0.2
复制代码

注:
因为你的172.16.1.2是211.0.02-211.0.0.9的路由节点,所以,不需要在eth0加别名
只要是这些地址出去的,返回的数据包肯定能够进入你的linux


[ 本帖最后由 springwind426 于 2007-9-16 10:29 编辑 ]

发帖
2121
C币
-139044
威望
401
贡献值
1
银元
-2
铜钱
4708
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13


QUOTE:原帖由 platinum 于 2007-9-16 10:18 发表
route add default gw 172.16.1.1
为什么?


因为172.16.1.1是路由节点的对端地址

离线aqxsj.
发帖
2138
C币
-152161
威望
419
贡献值
1
银元
0
铜钱
4863
人人网人气币
0
只看该作者 8楼 发表于: 2010-04-13


QUOTE:原帖由 springwind426 于 2007-9-16 10:25 发表
注:
因为你的172.16.1.2是211.0.02-211.0.0.9的路由节点,所以,不需要在eth0加别名
只要是这些地址出去的,返回的数据包肯定能够进入你的linux

正解
但若做服务器的话,没有绑定公网 IP 节点地址是无法从外部访问的,tracert 的结果是 TTL 超时
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个