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

Перенаправление MySQL-соединения с iptables и разными сетевыми интерфейсами

У меня есть ПК с Ubuntu в качестве роутера. Он имеет 3G-соединение с общедоступным IP-адресом в Интернет, а также есть частная беспроводная подсеть. Итак, у него есть два активных интерфейса:

С участием iptables Я не хочу пересылать каждое соединение MySQL (порт 3306) на локальный компьютер (10.42.43.10) подсети.

Я набираю эти команды iptables:

iptables -A PREROUTING -t nat -i ppp0 -p tcp --dport 3306 -j DNAT --to 10.42.43.10:3306
iptables -A FORWARD -p tcp -i ppp0 -o wlan0 -d 10.42.43.10 --dport 3306 -j ACCEPT

Но не работает. telnet publicip 3306 не работает :-(

Любая помощь будет оценена по достоинству. Спасибо!

Не смог прокомментировать ответ, опубликованный Nilesh, поэтому я добавил это для всех, у кого могут возникнуть проблемы после этого шага

в связи с

echo 1 > /proc/sys/net/ipv4/ip_forward

это будет работать, только если вы являетесь пользователем root.

ты должен сделай это так

echo -n 1 | sudo tee /proc/sys/net/ipv4/ip_forward

echo -n значит, нет конечного символа новой строки

sudo tee так что вы можете писать в файл с увеличенными разрешениями

sudo echo > /file не работает, если к / file нужно получить доступ как пользователь root, потому что sudo работает только с echo функция, а не > /file

Правила кажутся правильными. Я думаю, вы не включили переадресацию IP в ядре. Есть два способа включить переадресацию IP:

echo 1 > /proc/sys/net/ipv4/ip_forward

Это будет сброшено при перезагрузке. Добавьте следующую строку в /etc/sysctl.conf:

net.ipv4.ip_forward = 1

И у вас должно получиться заставить его работать.

Вы можете создать туннель ssh для пересылки соединений. Это намного проще и безопаснее, чем использование iptables:

ssh -L ВАШ_УБЛИЧНЫЙ_IP: 3306: 10.42.43.10: 3306 ВАШ_ПОЛЬЗОВАТЕЛЬ@10.42.43.10

Вам нужно будет ввести учетные данные пользователя ssh, и будет выполнено перенаправление через туннель. Быстро, легко и безопасно :)