Я хочу установить соединение openVPN на одном из моих компьютеров. Но я хочу убедиться, что соединение безопасно, фильтруя все, кроме openVPN. Следовательно, openVPN будет единственным способом доступа в Интернет.
Как лучше всего это сделать? iptables?
Надежно: если нет соединения openVPN, нет доступа к Интернету.
VPN-соединения безопасны "по определению". В противном случае вы бы не назвали это VPN. Безопасность достигается с помощью криптографических ключей. Рассматривать MAC-адреса в этом контексте не имеет смысла.
Неясно, как будет выглядеть соединение, но я предполагаю, что никакой маршрутизации не предполагается. Итак, вам нужно как минимум четыре правила в вашем брандмауэре (для физического интерфейса, скажем, eth0):
iptables -P OUTPUT DROP
iptables -A OUTPUT -o eth0 -d $OPENVPN_DESTIP -j ACCEPT
iptables -P INPUT DROP
iptables -A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED -j ACCEPT
Кроме того, вам потребуются правила для интерфейса VPN, например tun0:
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A INPUT -i tun0 -m conntrack --ctstate ESTABLISHED -j ACCEPT