Route命令使用通配符


0

我有一堆路由到我的LAN线路无法解决我的WiFi(设置为第一顺序)。

sudo route add 10.999.999.999 10.888.888.888

我有更多,但这只是一个样本。这很好用但有时我需要访问另一个网络资产,这意味着我必须再次将它添加到列表中。

我可以这样做,所以我路由任何从10开始的IP地址通过LAN路由器重新路由?

像这样的东西:

sudo route add 10.* 10.888.888.888

这不起作用

我的设置:

我有两个互联网连接。

  1. WiFi - 无防火墙 - 无法访问网络资产
  2. LAN - 防火墙 - 访问网络资产

我首先按照我的优先顺序设置WiFi,我使用我的主机文件通过LAN连接强制某些域来解析IP地址和路由表以通过我的LAN路由器引导这些IP。

基本上我想要我的蛋糕也吃它。


这是我最终得到的:

#! /bin/bash    
sudo route -n flush
sudo route add -net 10 10.255.255.255    
networksetup -setairportpower en0 off    
sleep 2    
networksetup -setairportpower en0 on

这将刷新路由表,路由以ip地址开头的任何流量 10. 到我的LAN连接的路由器,然后重新启动wifi路由器( en0 )。


1
IPv4地址中的三位数字仅为255而不是999. 10.999.999.999不是有效的IP地址。
sdmeyers

谢谢。我感觉不对我的IP地址。我想我可以评论说这些只是占位符IP地址,但我认为这很明显。
iambriansreed

1
bash扩张怎么样?你可以这样写: 10.{0..255}.{0..255}.{0..255} 它将扩展到以10号开头的所有IP。
Mateusz Szlosek

@MateuszSzlosek现在测试!
iambriansreed

@MateuszSzlosek'参数列表太长'
iambriansreed

Answers:


3

添加网络路由的正确形式是

route add -net 10 $GW

显然你必须更换 $GW 使用网关的IP地址。


Dang让路更有意义。谢谢你的耐心 。显然我根本不知道bash脚本。
iambriansreed

2

您可以使用 for 循环。这是一个例子:

for i in {0..255}; do
    for j in {0..255}; do
        for k in {0..255}; do
            sudo route add 10.$i.$j.$k 10.888.888.888
        done;
    done;
done

这与您的扩展评论不一样吗?
iambriansreed

不,不是,因为现在 route 命令是为每个IP地址单独运行的。
Mateusz Szlosek

1
我想这回答了这个问题,但1600万次迭代似乎有点矫枉过正。如果我是提问者,我会采取另一种方式。
jonescb

@jonescb完全正确。不得不停下来t *。*。4.255
iambriansreed

请不要这样做
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.