Маршрутизация всего трафика через StrongSwan VPN

Я новичок в этом - прошу прощения за мое невежество. Я просмотрел много других подобных вопросов, но безрезультатно.

Попытка настроить StrongSwan VPN таким образом, чтобы клиент C мог подключиться к хосту H, получить виртуальный IP-адрес и получить доступ к сети H. (Из-за практических ограничений при настройке и тестировании C и H в настоящее время находятся в одной сети - фактически они являются виртуальными машинами на одном физическом ПК, а сеть находится в режиме моста, поэтому они получают свои собственные IP-адреса.)

Использование StrongSwan 5.3.0, Ubuntu 14.04 (как на C, так и на H).

я бегу ipsec up home на C и соединение, по-видимому, установлено. H может пропинговать виртуальный IP-адрес, назначенный C (192.168.0.1), а C может видеть эхо-запросы на свой виртуальный IP-адрес (подтвержденный с помощью tcpdump).

Однако, насколько я могу судить, весь трафик на C по-прежнему направляется через сетевое соединение C, а не через туннель - если я запускаю tcpdump ip proto \\icmp на третьем, test, server (T) и отправляя эхо-запрос от C, я вижу запросы с реальным IP-адресом C. То же самое верно, если я сделаю wget от С до Т.

Мой конфиг следующий:

# /etc/ipsec.conf на хосте (H)

config setup

conn %default
    ikelifetime=60m
    keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev2

conn rw
    left=192.168.196.50
    leftcert=moonCert.pem
    [email protected]
    leftfirewall=yes
    right=%any
    rightsourceip=192.168.0.0/16
    auto=add

-

# /etc/ipsec.conf - на клиенте (C)

 config setup

 conn %default
     ikelifetime=60m
    keylife=20m
     rekeymargin=3m
     keyingtries=1
     keyexchange=ikev2

 conn home
     left=192.168.198.74
     leftsourceip=%config
     leftcert=carolCert.pem
     [email protected]
     leftfirewall=yes
     right=192.168.196.50
     [email protected]
     auto=add

Реальный IP-адрес H - 192.168.196.50. Реальный IP-адрес C - 192.168.198.74.

1 ответ

Решение

Мне нужно было бежать

sudo sysctl net.ipv6.conf.all.forwarding=1
sudo sysctl net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.3.0/24 -o eth0 -j MASQUERADE

на хосте, чтобы заставить его направить трафик.

Мой клиент C теперь может видеть другие машины в локальной сети и НЕКОТОРЫЕ (но не все, что я не понимаю) в Интернете.

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