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

Как заставить определенный трафик через туннель GRE?

Вот что я делаю.

Сервер (общедоступный Интернет - 222.x.x.x):

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf  
sysctl -p  
iptunnel add gre1 mode gre local 222.x.x.x remote 115.x.x.x ttl 255  
ip add add 192.168.168.1/30 dev gre1  
ip link set gre1 up  
iptables -t nat -A POSTROUTING -s 192.168.168.0/30 -j SNAT --to-source 222.x.x.x  
iptables -t nat -A PREROUTING -d 222.x.x.x -j DNAT --to-destination 192.168.168.2  

Клиент (общедоступный Интернет - 115.x.x.x):

iptunnel add gre1 mode gre local 115.x.x.x remote 222.x.x.x ttl 255  
ip add add 192.168.168.2/30 dev gre1  
ip link set gre1 up  
echo '100 tunnel' >> /etc/iproute2/rt_tables  
ip rule add from 192.168.168.0/30 table tunnel  
ip route add default via 192.168.168.1 table tunnel  

Пока здесь все идет хорошо. Но тогда 1-й вопрос, как использовать туннель GRE в качестве маршрута по умолчанию? Клиентский компьютер по-прежнему использует интерфейс 115.x.x.x по умолчанию.

2-й вопрос, как заставить проходить только ICMP-трафик через туннель, а все остальное идти через интерфейс по умолчанию? Я пытаюсь сделать это на клиентском компьютере:

ip rule add fwmark 200 table tunnel  
iptables -t mangle -A OUTPUT -p udp -j MARK --set-mark 200  

Но после этого у моей программы ping будет тайм-аут (если я не выполняю 2 команды выше и использую ping -I gre1 ip вместо этого он будет работать). Позже я хочу сделать что-то еще, например, только UDP-порт 53 через туннель и т. Д.

3-й вопрос, на клиентском компьютере я заставляю одну программу mysql прослушивать интерфейс gre1 192.168.168.2. На клиентском компьютере есть еще один общедоступный интерфейс (IP 114.x.x.x) ... Как правильно пересылать трафик с помощью iptables и маршрутизировать, чтобы mysql также отвечал на запрос, исходящий из этого общедоступного интерфейса 114.x.x.x?

Вопрос 1

Проверять, выписываться использование туннеля gre в качестве маршрута по умолчанию.

вопрос 2 все icmp через туннель

iptables -t nat -A POSTROUTING -o gre1 -p icmp -j SNAT --to-source 192.168.168.2

Вопрос 3

На клиентской машине используйте DNAT для перенаправления портов с внешнего порта на порт сервера.

Метод 2 - отражение порта / зеркальное отображение порта

iptables -t nat -A PREROUTING -p tcp -m tcp -m multiport -d 114.x.x.x --dports 3306 -j DNAT --to-destination 192.168.168.1
iptables -t nat -A POSTROUTING -o gre1 -p tcp -m tcp -m multiport -d 192.168.168.1 --dports 3306 -j SNAT --to-source 192.168.168.2