Используйте -h
опция tar. Из страницы справочника:
-h, --dereference
don't archive symlinks; archive the files they point to
Необходимо сделать три вещи на сервере VPN (Linode) для создания этой работы:
Необходимо включить передачу IP:
sysctl -w net.ipv4.ip_forward=1
Настройте целевой NAT (DNAT) для передачи порта. Вы, вероятно, уже поняли это, потому что это - стандартный материал перенаправления портов, но для полноты:
iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 6000 -j DNAT --to-dest y.y.y.100:6000
Настройте источник NAT (SNAT) так, чтобы с точки зрения Вашего клиента VPN, соединение прибыло из сервера VPN:
iptables -t nat -A POSTROUTING -d y.y.y.100 -p tcp --dport 6000 -j SNAT --to-source y.y.y.1
Причина Вам нужен SNAT, состоит в том, потому что иначе Ваш клиент VPN отправит свои возвращаемые пакеты прямо в хост, который инициировал соединение (z.z.z.z) через его шлюз по умолчанию (т.е. Verizon 3G), а не через VPN. Таким образом исходный IP-адрес на возвращаемых пакетах будет Вашим адресом 3G Verizon, и не x.x.x.x. Это вызывает все виды проблем, так как z.z.z.z действительно инициировал соединение с x.x.x.x.
В большинстве установок перенаправления портов SNAT не нужен, потому что хост, выполняющий перенаправление портов, является также шлюзом по умолчанию для узла назначения (например, домашний маршрутизатор).
Также обратите внимание, что, если Вы хотите к порту передачи 6000 к другому порту (говорят 7000), затем правило SNAT должно соответствовать на 7 000, не 6000.
Большинство серверов имеет передачу IP, отключенную в конфигурации по умолчанию. Необходимо включить его, если Вы хотите перенаправить входящие соединения через свою VPN.
Попробуйте это:
sysctl -w net.ipv4.ip_forward = 1
Я имею в виду в дополнение к iptables конфигурации.
То, что вы хотите достичь, (вероятно) очень возможно с pptpd
или OpenVPN. и iptables, однако, вы можете найти tinc лучшим кандидатом для этого варианта использования. Я только что прочитал этот , в котором описывается, как настроить tinc именно для этого варианта использования. Это (потенциально более простая) альтернатива pptdp
или OpenVPN. Тогда вам понадобятся точно такие же правила для iptables.
У меня тоже была эта проблема, и я пытался ее решить в течение нескольких часов .. Вот мое решение:
VPNClient
с тем же IP-адресом
. Поэтому я дал каждому из них статический IP-адрес
. Определите каталог, в котором должны храниться клиентские скрипты, например / etc / openvpn / staticclients и создайте каталог
mkdir / etc / openvpn / staticclients
Добавьте этот каталог в качестве опции в ваш файл конфигурации openvpn на сервере:
client-config-dir / etc / openvpn / staticclients
Для каждого клиента вы должны создать файл. Имя файла должно соответствовать атрибуту
общего имени
, который был указан в сертификате клиента. Эта команда получает CN из сертификата компьютера:В этом примере передается
IP-адрес
10.1.134.110/10.1.134.109 Клиенту с общим именемTESTCLIENT , а также проталкивает дополнительный маршрут для подсети 10.1.135.0.
cat / etc / openvpn / staticclients / TESTCLIENT ifconfig-push 10.1.134.110 10.1.134.109 push "route 10.1.135.0 255.255.255.0 10.1.134.62" { {1}}
http://www.yougetsignal.com/tools/open-ports/ и http://canyouseeme.org/ неправильно обнаруживали порты. Мне пришлось дополнительно запустить свое приложение на клиенте, чтобы веб-сайты могли видеть эти порты.
Нет необходимости в дополнительных правилах SNAT
. Требовались только эти правила:
sysctl -w net.ipv4.ip_forward = 1 iptables -t nat -A PREROUTING -p tcp --dport 28006 -j DNAT --to 10.1 .134.110
iptables-save
показать мои правила iptables - в то время как вывод не предназначается для потребления человеком, что это все еще читаемо и показывает все Ваши правила iptables.) Нет, к сожалению, Вы не можете использовать "все" там, потому что--dport
только работы с протоколами, которые на самом деле имеют порты ("все" включали бы, например, ICMP, который не имеет никакого понятия портов). Вы должны будете разделить правила для TCP и UDP. – AGWA 16.11.2012, 00:42