我有一个由 Shorewall 提供支持的伪装路由器:
- eth0:DHCP 客户端,外部接口(
net
区域) - eth1:静态,内部接口(
loc
区域)
现在我想添加一个 OpenVPN 客户端,当连接建立时创建一个 TUN 设备:tun1
,并且我想将发往子网 30.40.50.0/24 的所有流量路由到 VPN 隧道。所有其他流量应像以前一样通过 eth0 发出。
如果 VPN 连接断开(并且 TUN 设备不存在),则发往该子网的流量也应通过 eth0,作为后备。
似乎我的/etc/shorewall/routes
被完全忽略了,因为所有流量仍然通过 eth0 发出。
我做错了什么?
简而言之,这是我的 Shorewall 配置:
/etc/shorewall/zones
:
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
loc ipv4
tun ipv4 # tunnels for outgoing traffic
/etc/shorewall/interfaces
:
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect
loc eth1 detect
tun tun1 - optional
/etc/shorewall/providers
:
#NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS COPY
ISP 1 1 main eth0 detect fallback
TUN 2 2 - tun1 detect
/etc/shorewall/routes
#PROVIDER DEST GATEWAY DEVICE
#specifying default route causes error, so it's commented out:
# ERROR: Command "ip -4 route add 0.0.0.0/0 dev eth0 table 1" Failed
#ISP 0.0.0.0/0
# THIS ROW has no effect
TUN 30.40.50.0/24
/etc/shorewall/masq
:
#INTERFACE:DEST SOURCE ADDRESS PROTO PORT(S) IPSEC MARK USER/ SWITCH ORIGINAL
# GROUP DEST
# masqueraded LAN subnet is 10.0.0.0/24
eth0 10.0.0.0/24
tun1 10.0.0.0/24
命令结果shorewall show routing
被粘贴这里