Назад | Перейти на главную страницу

Как включить пересылку TUN / TAP?

У меня есть программа, которая пишет пакеты (адрес назначения 10.3.0.2) к интерфейсу TUN / TAP.

Сеть:

host1|tun0----eth1(10.3.0.1)|-------------------host2|eth1(10.3.0.2)|

Wireshark захватывает эти пакеты из интерфейса tun0 но они не отправляются в интерфейс eth1.

Команды:

sysctl -w net.ipv4.ip_forward=1
sysctl -p

iptables -A INPUT -i tun+ -j ACCEPT

iptables -A FORWARD -i tun+ -j ACCEPT

iptables -A INPUT -i tap+ -j ACCEPT

iptables -A FORWARD -i tap+ -j ACCEPT

/etc/init.d/networking restart

/etc/init.d/openvpn restart

Вы используете тюн или кран?

Если вы хотите, чтобы ваши удаленные хосты находились в одной подсети, вы должны использовать tap вместо tun, удалить 10.3.0.1 из eth1, создать мост между eth1 и tap0 и назначить 10.3.0.1 интерфейсу моста.

Это немного менее эффективно, чем tun, но позволит пропускать не-IP и широковещательный трафик между вашими vpn-хостами и локальной сетью. (и, следовательно, разрешите вашим хостам vpn использовать dhcp-сервер в локальной сети или подделать их адреса, если они хотят).

Если вам нужна отдельная сеть для ваших хостов vpn, вы должны выделить пару адресов для туннеля (или больше, если вы используете openvpn в режиме мультиклиентского сервера вместо режима p2p), и вы должны убедиться, что эти адреса привязан к интерфейсу tun, и что tun работает. На вашем чертеже нет адреса туннеля.

В зависимости от вашего дистрибутива перезапуск сетевой службы может привести к уничтожению изменений, внесенных в iptables.

Вам необходимо настроить мост между двумя интерфейсами (tun0 и eth0), вот некоторая документация о том, как установить мосты:

http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge

проблема, с которой вы столкнулись, связана с тем, что модуль gre в ядре не включен: sudo modprobe ip_gre