Попытка исключить трафик на определенном интерфейсе из Mullvad VPN
У меня есть машина с Ubuntu с одним интерфейсом, подключенным к Интернету (через муллвад). Блок RPi подключен к другому интерфейсу Ethernet на моем компьютере с Ubuntu. Соединение работает, если муллвад выключен, поэтому теперь я пытаюсь исключить весь трафик из RPi в Интернет из муллвада.
Я пытался следовать этому руководству , но пока безуспешно. Интерфейс, к которому подключен RPi, имеет IP 10.0.0.1. RPi получает IP-адрес от Ubuntu в диапазоне 10.0.0.0/8. Вот что у меня есть:
table inet excludeTraffic {
chain allowIncoming {
type filter hook input priority -100; policy accept;
ip daddr 10.0.0.1 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
}
chain allowOutgoing {
type route hook output priority -100; policy accept;
ip saddr 10.0.0.1 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
}
}
Может быть, кто-нибудь сможет указать мне правильное направление. Большое спасибо!
1 ответ
Вам нужно сделать это с помощью IPTables. Вот пример сценария.
#!/bin/bash
# Define variables
RPi_IP="10.0.0.2" # Replace with your RPi's IP
Primary_Interface="eth0" # Replace with your primary internet-facing interface
VPN_Interface="tun0" # Replace with your Mullvad VPN interface
Default_Gateway="YOUR_DEFAULT_GATEWAY" # Replace with your default gateway
# Create an IP set for excluded IPs
ipset create exclude_ips hash:ip
ipset add exclude_ips "$RPi_IP"
# Mark outgoing packets from the IP set
iptables -t mangle -A OUTPUT -m set --match-set exclude_ips src -j MARK --set-mark 0x6d6f6c65
# Set up routing
ip rule add fwmark 0x6d6f6c65 table 100
ip route add default via "$Default_Gateway" table 100
# Configure SNAT to maintain connection
iptables -t nat -A POSTROUTING -o "$Primary_Interface" -j MASQUERADE
# Enable IP forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# Flush existing rules (optional, use with caution)
# iptables -F
# ipset flush exclude_ips
echo "Excluded traffic from RPi to the internet from the Mullvad VPN."