Я просто обычно настраиваю туннель IPv6 (из sixxs.net или he.net), если у них еще нет IPv6, и тогда компьютер имеет статический адрес, и мне не нужно связываться с NAT. Мне также нравится устанавливать аутентификацию на основе ключей (тогда они не должны сообщать вам свой пароль).
У Sixxs есть собственный клиент, которым вы пользуетесь. Он работает практически за любым NAT и автоматически обновляется при изменении адреса IPv4. У них есть инструкции о том, как его настроить, и он упакован для Ubuntu.
Hurricane Electric использует туннель, куда пакеты IPv6 отправляются как полезные данные пакета IPv4. В отличие от Sixxs, TCP / UDP не используется. Это означает, что NAT, за которым вы находитесь, должен поддерживать пересылку PROTOCOL 41 (не порта), и его может использовать только один компьютер за NAT. Программное обеспечение для использования такого туннеля встроено в Ubuntu.
Для ОН я использую что-то вроде этого в /etc/network/interfaces
:
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
endpoint 216.218.226.238
address 2001:470:a29f::2
netmask 64
ttl 64
up ip -6 route add default dev he-ipv6
down ip -6 route del default dev he-ipv6
Другая вещь, которую вам нужно сделать, это обновить конечную точку туннеля. Поскольку вы не знаете, когда изменится внешний IP, вам нужно будет просто пытаться обновлять конечную точку каждые несколько минут. Вы можете использовать что-то вроде этого и запустить его из cron:
#!/bin/sh
echo -n "Hurricane Electric Proto-41 tunnel endpoint update: "
#(C) 2010 Erik B. Andersen This script is licensed under the latest version of the
# AGPL published by the Free Software Foundation at http://www.gnu.org/licenses/ .
####Set these for each different site#########
pass="passwordhere"
user_id="a765b8e2f474667dcb56e08c5f1aa05b"
tunnel_id="97817"
####Past here doesn't need to be changed######
wget -4 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=$(echo -n "${pass}" | md5sum | grep -o -E "[0-9a-fA-F]{32}")&user_id=${user_id}&tunnel_id=${tunnel_id}" -O /dev/null -o /dev/null --no-check-certificate
echo " Done"