OpenVPN маршрутизирует удаленный трафик в зависимости от подсети

Мне удалось настроить OpenVPN для маршрутизации всего трафика через удаленный сервер openvpn.

Сервер OpenVPN имеет два интерфейса: eth0 -> доступ в Интернет eth1 -> частная сеть: 192.168.1.0/24

Теперь весь трафик пропитан Eth0.

server.conf

# SERVER UDP/9494
mode server
proto udp
port 9494
dev tun
tcp-queue-limit 128
tun-mtu 1500
mssfix 1300
tun-mtu-extra 32
txqueuelen 15000
# KEYS
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
# NETWORK
server 192.168.2.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 4.4.4.4"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
# SECURITY
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# LOGS
verb 3
mute 20
status openvpn-status.log
; log-append /var/log/openvpn.log

Iptables:

iptables -A INPUT -p udp --dport 9494 -d $SERVER_IP --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i tun0 -j ACCEPT 
iptables -I FORWARD -o tun0 -j ACCEPT 
iptables -I OUTPUT -o tun0 -j ACCEPT 
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT 
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE  

Я хочу сделать то же самое за исключением диапазона 192.168.1.0/24, который должен быть натянут на Eth1

Как я могу сделать это с iptables?

Спасибо за советы

2 ответа

Решение

Я думаю, что вы должны добавить правила для частной сети в POSTROUTING и FORWARD, но должны определить их перед остальными правилами POSTROUTING.

Кроме того, если я правильно вижу, что первое правило POSTROUTING без какой-либо спецификации исходной сети соответствует всем вашим пакетам, поэтому следующая строка никогда не будет совпадать - удалите это.

Поэтому я думаю, что ваши правила iptables должны выглядеть так:

iptables -A INPUT -p udp --dport 9494 -d $SERVER_IP --sport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -I OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 192.168.1.0/24 -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

Может быть, вы должны поставить некоторые записи на месте, чтобы увидеть, если вам нужно перенастроить или пропустил что-нибудь.

После вышеуказанных правил добавьте:

iptables -A FORWARD -j LOG --log-prefix 'iptables-forward: '
iptables -t nat -A POSTROUTING -j LOG --log-prefix 'iptables-postrouting: '

Если вы просто хотите добавить маршруты, чтобы ваши клиенты OpenVPN могли общаться с остальной частью сети, просто сделайте это:

нажать "маршрут 192.168.1.0 255.255.255.0"

нажать "маршрут 192.168.2.0 255.255.255.0"

Другие вопросы по тегам