我在我的 Linux 服务器 (VPS、OpenVZ) 上创建了一个 GRE 隧道。服务器从此隧道获取一个公共 IP 地址,我需要通过它从 Internet 访问它。
已有一个默认网关,位于托管提供商的网络上。我无法更改或删除它,否则将无法访问服务器。
使用 MikroTik 路由器,我会在 GRE 隧道(INPUT 链)上标记传入连接,然后为标记的连接设置路由标记。稍后,我只需将路由标记的路由添加到 0.0.0.0/0,网关为隧道另一端的 IP 地址。
但是,在 Linux 上使用 iptables 和 iproute2 无法获得相同的行为。根据 Server Fault 上的其他问题,我已经这样做了:
iptables -t mangle -A INPUT -j CONNMARK --restore-mark
iptables -t mangle -A INPUT -i gre1 -j MARK --set-mark 100
iptables -t mangle -A INPUT -j CONNMARK --save-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
ip rule add from all fwmark 100 lookup gre_route
ip route add default via 198.51.100.53 table gre_route
gre_route
表已在 /etc/iproute2/rt_tables 上正确创建。
gre1
是 GRE 隧道的接口。服务器 IP 为 198.51.100.54,另一端 IP 为 198.51.100.53(示例地址)。
出了什么问题?为什么不工作?我可以从远程隧道端 ping 服务器,反之亦然,但无法从 Internet (network-tools.com) ping 隧道上的服务器 IP 地址。我的 ISP 正确地将 GRE 隧道中使用的公共 IP 地址块路由给我。
那又怎么样?
提前谢谢您。再见。
编辑:根据要求,以下是一些命令的输出:
ip link show
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT
link/void
3: gre0: <NOARP> mtu 1476 qdisc noop state DOWN mode DEFAULT
link/gre 0.0.0.0 brd 0.0.0.0
4: gretap0: <BROADCAST,MULTICAST> mtu 1476 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
5: zeoip0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500
link/ether ab:cd:ef:12:34:56 brd ff:ff:ff:ff:ff:ff
ip route show
:
198.51.100.52/30 dev zeoip0 proto kernel scope link src 198.51.100.54
169.254.0.0/16 dev venet0 scope link metric 1002
default dev venet0 scope link
ip rule show
:
0: from all lookup local
32765: from all fwmark 0xbcb lookup eoip_rb
32766: from all lookup main
32767: from all lookup default
从纯 GRE 更改为 EoIP 后,我将表重命名gre_route
为。eoip_rb
ip route show table eoip_rb
:
default via 198.51.100.53 dev zeoip0
zeoip0
是 EoIP 接口(MikroTik 专有,通过 GRE 工作)。我已更改为 EoIP 来测试这是否是我路由器上的 ARP 表的问题(GRE 没有 ARP,而 EoIP 有),但出现了同样的问题。