用Linux系统做路由器

一、网络结构如下:

Internet
      ↑
路由器A (Lan:192.168.1.1)
     ↑
Linux路由器(eth0接路由器A,IP:192.168.1.2,网关:192.168.1.1)
     ↑            (eth1接Switch:IP:192.168.0.1,网关不要填)
Switch
     ↑
PC1 | …… | PCn

(PC1接Switch,IP:192.168.0.2,网关:192.168.0.1)

二、按以上顺序接好各设备,并按如下内容设置:

1、路由器A:将其设置成能上互联网,Lan口设置IP:192.168.1.1,子网掩码:255.255.255.0。
     并添加一条路由:route add -net 192.168.0.0 network 255.255.255.0 gw 192.168.1.2 (根据我的经验,如果不加这个命令,会导致路由器A无法向PC1。。。PCn发送数据)
2、Linux路由器eth0接路由器A,IP:192.168.1.2,子网掩码:255.255.255.0,网关:192.168.1.1。
3、Linux路由器eth1接Switch,IP:192.168.0.1,子网掩码:255.255.255.0,网关不要填。
4、PC1…… n接Switch,IP:192.168.0.0/24,子网掩码:255.255.255.0,网关:192.168.0.1。

三、启动封包转发
# echo "1" > /proc/sys/net/ipv4/ip_forward

四、启动网络设备
# ifup eth0
# ifup eth1

五、日志记录
1、打开日志配置文件:
# vim /etc/syslog.conf
2、增加一行:
kern.=debug      /var/log/router.log
3、记录日志:
# iptables -A FORWARD -p tcp -j LOG --log-level debug --log-prefix "router test ------ "

就这样,一个简单的Linux路由器就架设成功了。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以上是我转载的,另外我在自已的VirtualBox虚拟机上做了类似的实验:配置linux路由器,使两个局域网之间能通讯

路由器是linux系统,
eth0 ip为192.168.56.35 对应VirtualBox的Ethernet adapter VirtualBox Host-Only Network
eth2 ip为192.168.57.1对应VirtualBox的Ethernet adapter VirtualBox Host-Only Network #2
我们的目的是实现xpVC6访问win2003上的网页

win2003上有php做的网站,ip为192.168.56.25 对应VirtualBox的Ethernet adapter VirtualBox Host-Only Network,
默认网关为192.168.56.35(如果不这样设置,会导致xpVC6可以ping向win2003,但是win2003无法回应xpVC6,最终xpVC6看到的结果就是ping不通win2003)

xpVC6的ip为192.168.57.3 对应VirtualBox的Ethernet adapter VirtualBox Host-Only Network #2
默认网关为192.168.57.1

打开linux内核的包转发功能:
修改/etc/sysctl.conf中的net.ipv4.ip_forward = 1
然后执行sysctl -p,使内核参数修改生效
# iptables -A FORWARD -j ACCEPT

在linux上执行tcpdump -i eth0 -vnn icmp
然后在xpVC6(192.168.57.3)上ping win2003(192.168.56.25)
最终linux上显示
[root@gis sysconfig]# tcpdump -i eth0 -vnn icmp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
00:00:59.969797 IP (tos 0x0, ttl 127, id 214, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.57.3 > 192.168.56.25: ICMP echo request, id 512, seq 29184, length 40
00:00:59.971002 IP (tos 0x0, ttl 128, id 381, offset 0, flags [none], proto ICMP (1), length 60)
    192.168.56.25 > 192.168.57.3: ICMP echo reply, id 512, seq 29184, length 40
00:01:00.978717 IP (tos 0x0, ttl 127, id 215, offset 0, flags [none], proto ICMP (1), length 60)
。。。。。。

虽然实验到此结束了,但是我发现两个局域网在通讯的时候路由器不需要进行NAT(至少我没有在iptables中配置nat表,只是配置了filter,当然局域网上公网必须NAT,应为局域网中的私有IP不能出现在公网上)


你可能感兴趣的:(Linux/Unix)