我一直无法找到如何做到这一点。
我有一个 VPN 接入点,它使用 openconnect 和 hostapd 以及以下 vpn iptables 规则
pi@raspberrypi:~ $ cat /etc/iptables.ipv4.vpn.nat
# Generated by iptables-save v1.4.21 on Sun Sep 4 02:28:21 2016
*filter
:INPUT ACCEPT [2:152]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2:152]
-A FORWARD -i tun0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o tun0 -j ACCEPT
COMMIT
# Completed on Sun Sep 4 02:28:21 2016
# Generated by iptables-save v1.4.21 on Sun Sep 4 02:28:21 2016
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [5:380]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
# Completed on Sun Sep 4 02:28:21 2016
以及以下非 VPN 接入点
# Generated by iptables-save v1.4.21 on Sun Sep 4 02:28:21 2016
*filter
:INPUT ACCEPT [2:152]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2:152]
-A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o wlan1 -j ACCEPT
COMMIT
# Completed on Sun Sep 4 02:28:21 2016
# Generated by iptables-save v1.4.21 on Sun Sep 4 02:28:21 2016
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [5:380]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan1 -j MASQUERADE
COMMIT
# Completed on Sun Sep 4 02:28:21 2016
有一些 IP 无法从 VPN 内部访问,因此我想要做的是通过 VPN 发送所有流量,例如 xxxx 和 xxxy 除外。对于该流量,我只想定期对其进行 nat,以便我可以通过接入点而不是通过 VPN 访问它。
知道我该怎么做吗?
答案1
你想太多了这个问题。
考虑两个接口的两个网关(网关,而不是接口本身的 IP 地址)
gweth0=192.168.1.254
gwtun0=10.1.1.1
你可以这样路由它们
route add default gw $gwtun0
route add -host x.x.x.x gw $gweth0
route add -host x.x.x.y gw $gweth0
您甚至可以路由整个子网
route add -net a.b.c.d/24 gw $gweth0
iptables ... MASQUERADE
仅当您需要重写 IP 地址时才需要这些内容。来自单个客户,这是不可能的。