Итак, у меня есть виртуальный сервер, настроенный на Amazon, который я назову OSERV, для запуска openvpn на 3 разных портах. Все серверы OpenVPN действуют как шлюзы маршрутизации. 2 сервера, которые работают по TCP, отлично работают, но мой UDP-сервер, хотя он может устанавливать локальные соединения, всегда выходит из строя для внешних IP-адресов. Я назову это УДПСЕРВ.
Поэтому, когда я отправляю ssh через UDPSERV в OSERV, он работает нормально. Но когда я пытаюсь использовать ssh (или выполнять любые другие действия) в другом месте через UDPSERV, время ожидания соединения прерывается. Я назову внешний сервер, на котором я тестирую, EXSERV. Я просматривал журнал на уровне детализации 6, и я вижу отправляемые и получаемые пакеты при попытке установить соединение с EXSERV. Так что я знаю, что это работает. Я также запускал wirehark на клиентском компьютере и вижу, что он отлично отправляет и получает пакеты даже при SSHing в EXSERV.
ssh root@ESERV -o ConnectTimeout=60
Connection reset by ESERV port 22
Как ни странно, когда я смотрю журнал, выполняя действия через UDPSERV в OSERV, он, похоже, не показывает его.
Я подтвердил, что MTU не проблема. Что интересно, я могу передать> 4000 байтов в качестве MTU. Однажды я попытался установить его на 500.
Думаю, это все, что я могу сказать по поводу постановки этого вопроса. Если кто-нибудь может помочь мне понять, почему это не работает, я был бы очень признателен. Ниже представлены все мои конфигурации.
[Edit] Ах да. Я сделал netcat через UDPSERV от моего клиента к EXSERV, и он работал нормально.
Все 3 конфигурации сервера openvpn имеют следующие соответствующие настройки:
dev tun
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
keepalive 10 120
comp-lzo
persist-key
persist-tun
Различные настройки:
Serv1:
port 80
proto tcp
server 10.8.0.0 255.255.255.0
Serv2:
port 443
proto tcp
server 10.8.1.0 255.255.255.0
UDPSERV:
port 123
proto udp
server 10.8.2.0 255.255.255.0
В настройках безопасности Amazon есть следующие допуски:
Входящий ПРИНЯТЬ: TCP22, TCP80, TCP443, UDP123
Исходящий ПРИНЯТЬ: Все
Ниже приведены мои настройки iptables:
#Clear everything out
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
#All connections
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Serv1
iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
#Serv2
iptables -I FORWARD -i tun1 -o eth0 -s 10.8.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -s 10.8.1.0/24 -j MASQUERADE
#UDPSERV
iptables -I FORWARD -i tun2 -o eth0 -s 10.8.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -s 10.8.2.0/24 -j MASQUERADE
Я также пробовал следующие настройки для UDPSERV:
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 123 -j ACCEPT
iptables -I FORWARD -i tun2 -j ACCEPT
iptables -I FORWARD -i tun2 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -s 10.8.2.0/24 -j MASQUERADE
Ниже приводится журнал openvpn на уровне детализации 6. Клиент подключился из 45.16.1.12. Затем я подключился к ssh OSERV. Затем я попытался подключиться к EXSERV SSH, который истек через 30 секунд. Журнал OpenVPN . Пожалуйста, дайте мне знать, если у вас возникнут проблемы со скачиванием файла, и я попробую другой сервис.
Итак, проблема в том, что я работал на udp-порту 123 (порт ntpd). Я предполагаю, что какой-то маршрутизатор должен иметь специальную кодировку для этого порта, чтобы разрешать только небольшие пакеты или что-то в этом роде. Пришло время найти другой общий порт udp для работы.