Fra*_*lan 58 networking routing
我从 Ubuntu 8.10 开始使用 Ubuntu;今天我正在使用 Ubuntu 12.04 服务器。
我在启动时难以保持静态路由。我通常会放置路由命令
/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>
Run Code Online (Sandbox Code Playgroud)
in/etc/rc.local或者我会routes在目录中创建一个文件(命名)/etc/network/if-up/,但我注意到在 Ubuntu 12.04 上它不起作用。
如果我在 shell 中键入命令,它们会起作用,但是当它们在指定的文件中时,相同的命令不起作用。
我已经尝试将文件名更改为其他名称,认为我的文件名 ( routes) 在 Ubuntu 12.04 中可能是错误的,但这也不起作用。
我还注意到该命令/sbin/ifconfig有效,而不是/sbin/route.
网络设置发生了什么变化?
如何在 Ubuntu 12.04 上定义静态路由?
Eri*_*lho 71
您可以将静态路由放入/etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
小智 20
我经常发现定义静态路由的正确位置在 /etc/network/interfaces 中,例如,如果您打算使用 /etc/init.d/networking restart 全局重新启动网络就可以了。但是如果你打算使用 ifdown 和 ifup 来单独关闭一个接口, ifup 会以错误结束:
ifup eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
Run Code Online (Sandbox Code Playgroud)
因为它试图定义一个路由,但它已经被定义了。界面无论如何都会打开,但是 ifup 不会更新 /run/network/ifstate 所以下次你要我们 ifdown 你将无法做到,除非你使用 --force 标志。
为了让ifup在已经定义路由的情况下继续配置,你可以在/etc/network/interfaces中定义路由时使用这种格式
up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true
Run Code Online (Sandbox Code Playgroud)
这样你会在输出中有警告但接口配置将完成
ifup eth1
RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553
Run Code Online (Sandbox Code Playgroud)
Ima*_*ani 10
由于现在是 2021 年,您可以netplan在 ubuntu 18.04 或更高版本上使用它进行配置(在 ubuntu 20.04 上测试)。
完整的参考可在netplan 网站上找到。/etc/netplan/配置文件可以在目录下找到。
network:
version: 2
ethernets:
ens160: # in my case the interface name is ens160
dhcp4: false # or true. depends on your situation
addresses: [192.168.0.10/24] # your static IP address
# the actual answer is here
routes:
- to: 0.0.0.0/0 # or any other subnet you like. 0.0.0.0/0 means default gateway
via: 172.16.0.1 # or any other gateway you want.
on-link: true # as you see my interface IP address and default gateway are not in the same subnet so we should put this true but if they are in the same subnet this is not required.
Run Code Online (Sandbox Code Playgroud)
附言。YAML 配置文件对缩进敏感,并且不接受制表符。缩进是2个空格。
别忘了跑netplan apply。
小智 9
你可以试试这个(将它添加到/etc/network/interfaces),这几乎是设置路由的完整方法:
auto eth0
iface eth0 inet static
post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/
Run Code Online (Sandbox Code Playgroud)
Ubuntu 中有一个ifupdown-extra包。
它提供了自动脚本(安装在 中/etc/network/*/),其中之一用于添加静态路由。
这个的配置文件是 /etc/network/routes
这个配置文件的顶部有一个很好的描述:
此配置文件由 static-routes if-updown 脚本和 /etc/init.d/networking-routes 脚本读取,以设置与给定接口或全局路由关联的路由列表。
我使用的一个示例路线是:
192.168.240.0 255.255.255.0 192.168.130.3 em3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
466567 次 |
| 最近记录: |