このブログを検索

2022/02/11

openvpn@centos8 第2回 スプリットトンネリング

やること 
  •  firewalldは止めずにちゃんとopenvpnを指定して許可する 
  •  接続先サーバのlan側のみをトンネリングする 
  •  接続先サーバはconohaのプライベートネットワーク(192.168.55.0/24)経由で接続されたもう一台のVPS

# cat server.conf
port 1194
proto udp
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
cipher AES-128-CBC
#comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

status openvpn-status.log
log-append openvpn.log
verb 3

#クライアント側の設定ファイル (client.ovpn)
remote vpn.example.com
proto udp
dev tun
port 1194
ifconfig 10.8.0.2 10.8.0.1
secret static.key
cipher AES-128-CBC
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
route 192.168.55.0 255.255.255.0
サーバ側のconfigに下記を入れたがうまくいかない。 
クライアント側のルーティングが書き換わらない。 
openvpnを管理者として実行にしてもダメ。 

push "route 192.168.55.0 255.255.255.0"

 クライアント側の設定ファイルに下記を追加したら追加された。 (route printで確認)
route 192.168.55.0 255.255.255.0

あとは、接続先のサーバ側でip forwardingとnat設定をする。
フォワーディングは
sysctl -w net.ipv4.ip_forward=1

firewall-cmdで"Internal"ゾーンを作成し(internalというのが既存であるが)
eth1を追加

そしてNAT
あるサイトを参考に下記の設定を入れてみたら、
pingはプライベートネットワーク越しに通るようになったのだが、http/httpsが通らない。
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
悩んで調べた結果、
firewall-cmdでプライベートネットワーク側にmasquerade設定を入れることで解決
firewall-cmd --zone=Internal --add-masquerade
最初に入れた --direct --passthrough .... の設定も必要なのかはわからない。 本当は消したいのだが、消し方がわからない....