Как включить переадресацию 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

3 ответа

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

Если вы хотите, чтобы ваши удаленные хосты находились в одной подсети, вы должны использовать 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

Другие вопросы по тегам