使用时netplan generate我不断收到错误消息:
gateway4已弃用,请改用默认路由。
对于 netplan 中的静态 IP 地址分配,我始终使用以下结构:
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
dhcp6: false
addresses:
- 192.168.10.10/24
gateway4: 192.168.10.1
nameservers:
addresses: [192.168.10.1]
Run Code Online (Sandbox Code Playgroud)
显然gateway4是引用了gateway4: 192.168.10.1,但是我们如何解决它呢?
在我的 PC 上,我必须遵循路由表:
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Run Code Online (Sandbox Code Playgroud)
我不明白它是如何分析的,我的意思是自上而下还是自下而上?
如果从上到下进行分析,那么即使 IP 目的地是 192.168.1.15,所有内容也将始终发送到我家中的路由器;但是我知道(错误地?)是,如果 PC 在我的同一个本地网络中,那么一旦我通过广播消息恢复了 MAC 目的地,那么我的 PC 可以直接将消息发送到目的地。
我有以下设置
Linux 1 Linux 0
eth1 eth0-------------------eth0
14.14.14.80 19.19.19.20 19.19.19.10
2005::5/64 2004::3/64 2001::3/64
Run Code Online (Sandbox Code Playgroud)
从Linux0,我能够ping通14.14.14.80 or 19.19.19.20(19.19.19.20加入作为默认GW),也对Linux1,ipv4启用转发。对于ipv6,我无法添加2004::3/64为默认 ipv6 网关Linux0。我试过
ip -6 route add default via 2004::3
Run Code Online (Sandbox Code Playgroud)
和
ip -6 route add default via 2004::
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
RTNETLINK answers: No route to host
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
BSDroute命令有一个功能,可以显示为给定主机选择的路由。例如:
/Users/mhaase $ route get google.com
route to: iad23s07-in-f8.1e100.net
destination: iad23s07-in-f8.1e100.net
gateway: 10.36.13.1
interface: en0
flags: <UP,GATEWAY,HOST,DONE,WASCLONED,IFSCOPE,IFREF>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
Run Code Online (Sandbox Code Playgroud)
如果我手动弄乱路由表以确保路由规则按预期工作,我偶尔会发现这很有用。
GNU 版本的 route 没有这个相同的“get”子命令。GNU/Linux 有什么等价物或替代品吗?
小故事,
3个接口,eth0(局域网),eth1(ADSL),eth2(4G)。
eth0 -> eth1:有效
(端口 80、443、4070) eth0 -> eth2:不会发生
端口 80 和 443 通过 eth2
ant 其余通过 eth1

eth0: -ip 10.0.0.1 -net 10.0.0.0/8 -gw 10.0.0.1 (the servers own intf)
eth1: -ip 192.168.1.74 -net 192.168.1.0/24 -gw 192.168.1.254
eth2: -ip 192.168.1.91 -net 192.168.0.0/24 -gw 192.168.0.1
Run Code Online (Sandbox Code Playgroud)
(端口 80 没有注释并且可以工作,但是通过 eth1 是错误的。)
modprobe iptable_nat
modprobe ip_conntrack
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT …Run Code Online (Sandbox Code Playgroud) 我无法 ping google.com (unknown host)。但是我可以ping通IP地址。我试图 ping 谷歌的 IP 地址,但它不起作用。
resolv.confnameserver 8.8.8.8 nameserver 209.139.209.33
Run Code Online (Sandbox Code Playgroud)ifconfig -aeth0 Link encap:Ethernet HWaddr 00:50:56:xx:xx:xx
inet addr:10.2.0.63 Bcast:10.2.15.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:638762803 errors:0 dropped:0 overruns:0 frame:0
TX packets:231307131 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55502371533 (51.6 GiB) TX bytes:23436883491 (21.8 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:56011078 errors:0 dropped:0 overruns:0 frame:0
TX packets:56011078 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0 …Run Code Online (Sandbox Code Playgroud)如何从 UNIX 服务器中删除如下所示的路由?
122.252.228.38/255.255.255.255 122.252.228.38 UH 0 lan4 4136
Run Code Online (Sandbox Code Playgroud) 我通过删除一个规则修改了我的路由表,并为我的第二个接口 eth1 添加了两个新规则:
route del -net 10.1.2.0 netmask 255.255.255.0
route add -host 10.1.2.51 eth1
route add -host 10.1.2.52 eth1
Run Code Online (Sandbox Code Playgroud)
我希望规则在重启后继续存在。我可以编写一个简单的rc脚本来删除1条规则并插入2条新规则,但我想知道是否有办法配置ifconfig,而不是在启动时为接口(eth1)添加路由规则,甚至更好,指定应添加哪些规则。
什么是干净的方式来做到这一点?是否ifconfig允许我为路由指定自定义规则?
我需要添加一个重启后不会被删除的路由。我阅读了这两种方法:
添加
ip route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX到文件/etc/network/interfaces
或者
使用以下命令创建文件/etc/network/if-up.d/route:
#!/bin/sh
route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX
Run Code Online (Sandbox Code Playgroud)
并使其可执行:
chmod +x /etc/network/if-up.d/route
Run Code Online (Sandbox Code Playgroud)
所以我很困惑。最好的方法是什么?
我有一个自己编写的接口 tun0(基于TUN/TAP)输出它接收到的内容。
我需要系统的所有流量都流经这个接口。
接口的作用是:
正如您猜想的那样,我正在尝试构建一个反审查工具。
关于隧道的决定必须在 tun0 进程中进行,
因为只有在那里我们才能使用受信任的 DNS。
我需要你的帮助来告诉我如何让所有流量都通过一个自写的接口 tun0。如果 tun0 需要更改,我会要求您提供此类更改。
以下是我尝试使所有流量通过 tun0 并失败(ping 失败)的方法。
gcc tun0.csudo ./a.outsudo ip addr add 10.0.0.1/24 dev tun0创建表约翰
$ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
200 John
Run Code Online (Sandbox Code Playgroud)顺序很重要:
sudo ip rule add from all lookup Johnsudo ip route add default dev tun0 table John …