网络拓扑如上图所示,有192.168.1.0(255.255.255.0)
,192.168.2.0(255.255.255.0)
两个局域网。若要使host1
可直接通过ip地址访问host3
,则需在host2
中配置路由转发。
host2
配置静态路由(系统一般会自动配置)
# 添加静态路由
> route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
> route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1
# 查看路由表
> route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.168.1.100 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
开启内核路由转发
# 临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward# 永久开启
vim /etc/sysctl.conf # 设置 net.ipv4.ip_forward = 1
sysctl -p
iptabels设置转发
# 允许转发到192.168.1.0网段
> iptables -I FORWARD -d 192.168.1.0/24 -j ACCEPT
# 允许转发到192.168.2.0网段
> iptables -I FORWARD -d 192.168.2.0/24 -j ACCEPT
# 若添加错误,使用 `iptables -D FORWARD [i]` 删除FORWARD中第[i]个规则
# 查看iptables
> iptables -nL
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.2.0/24
ACCEPT all -- 0.0.0.0/0 192.168.1.0/24
host1
host1
中进行配置,将发向192.168.2.0
的数据路由到172.168.1.2
。
# windows
> route ADD 192.168.2.0 MASK 255.255.255.0 192.168.1.2
# linux
> route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2
# 查看路由表
> route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.168.1.100 0.0.0.0 UG 0 0 0 eth0
192.168.2.0 172.168.1.2 255.255.255.0 U 0 0 0 eth0
配置完成后即可在host1
ping通host3
。