通过从 pfsensa 端向 gre 隧道添加 src-nat 规则来解决此问题。在这种情况下,Debian 会响应 pfsense,后者会向客户端发送响应。
pfsense 中的规则称为出站 NAT。隧道的 aypishnik gre 上的伪装或 SNAT 是必要的。
在 Debian 方面,这可以通过连接标记和策略路由来解决(要困难得多)。
像这样的东西。可能需要改进。
# один раз
echo 101 tunnelgre0 >> /etc/iproute2/rt_tables
# в скрипты
PEERIP=10.0.2.1
LOCALIP=10.0.1.1
ip tunnel add gre0 mode gre local xxx.xxx.xxx.xxx \
remote xxx.xxx.xxx.xxx dev eth0 ttl 64
ip addr add $LOCALIP peer $PEERIP dev gre0
ip link set gre0 up
ip route add default via $PEERIP table tunnelgre0
# ip route add 10.0.0.0/16 via $PEERIP # локальная сеть за пфсенсом, можно добавить так, но в случае если с пфсенс проброс - мало поможет.
ip rule add from $LOCALIP table tunnelgre0 # на этом месте уже заработает часть сервисов
ip rule add fwmark 20 table tunnelgre0
# ip rule add from $LOCALIP fwmark 20 table tunnelgre0 # или так
iptables -t mangle -I PREROUTING -d $LOCALIP -j MARK --set-mark 20
iptables -t mangle -I PREROUTING -d $LOCALIP -j CONNMARK --save-mark
iptables -t mangle -I OUTPUT -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
火星人很可能有问题。
由于 pfsense 不是 debian 的默认网关 - debian 尝试直接回答。客户端收到来自它没有请求的地址的响应。
通过从 pfsensa 端向 gre 隧道添加 src-nat 规则来解决此问题。在这种情况下,Debian 会响应 pfsense,后者会向客户端发送响应。
pfsense 中的规则称为出站 NAT。隧道的 aypishnik gre 上的伪装或 SNAT 是必要的。
在 Debian 方面,这可以通过连接标记和策略路由来解决(要困难得多)。
像这样的东西。可能需要改进。