Я пытаюсь перенаправить трафик с физического интерфейса enp5s0
на виртуальный tun0
. objective состоит в том, чтобы заставить tun0
получать практически все пакеты от enp5s0
.
Сначала я включаю пересылку командой
sudo sysctl -w net.ipv4.ip_forward=1
Затем я создаю tun0
, запустив
sudo ip tuntap add dev tun0 mod tun
Я назначаю ему IP-адрес и включаю устройство:
sudo ifconfig tun0 10.1.8.5 netmask 255.255.255.0 promisc up
Я хочу, чтобы все пакеты переходили от enp5s0
к tun0
, поэтому я должен использовать iptables . Мне нужно сделать правило, которое позволяет пересылку с enp5s0
на tun0
, поэтому команда
sudo iptables -A FORWARD --in-interface tun0 --out-interface enp5s0 -j ACCEPT
Затем я включаю NAT, запустив
sudo iptables -t nat -A POSTROUTING --out-interface enp5s0 -j MASQUERADE
tcpdump не показывает трафик на tun0
.
Также я попробовал почти то же самое, но с помощью устройства TAP. Я создал мост с помощью brctl
, добавил tap0
и enp5s0
, но enp5s0
не получил пакетов, и с tap0
все было в порядке. Ничего подобного по default gw 10.1.8.5
работает в случае TUN. Где ошибка?
Ваши входные и выходные интерфейсы меняются местами в команде iptables.
Они должны быть:
sudo iptables -A FORWARD --in-interface enp5s0 --out-interface tun0 -j ACCEPT
а также:
sudo iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE