この場合の pluggable というのはどういう意味の pluggable なんだろ
@orumin もともとこういうことをしたくて https://mstdn.rinsuki.net/users/rinsuki/statuses/103964771125549417 、プラグインで好き勝手クエリのレスポンス変えられたら実現できそうだよなーと思って実装したんだけど、設定周りとかrewrite機能がなんとも言えない感じで、あと単に特定のドメインをNXDOMAINということにするプラグインとかが標準になさそう? で、他のないかなあというところ
@rinsuki これは DNS ではなくてルーティングとか VLAN とかで解決するべき問題に見える
@orumin その辺ちょっとやってみようとしたけど何もわからんしめんどそうだなとなったという経緯があり
@rinsuki VPN sever のホストが 192.168.Y.0/24 から 192.168.X.0/24 へのパケットを forward すればいいだけでは?(server に 192.168.Y.80 のアドレスを振るのは止める)
@orumin VPNサーバー自体は192.168.X.0/24にはいないんですよね (元々IPv4 over IPv6を自前でやるためにVPS上に立てたやつなので)
@rinsuki いやべつに VPS 側に居るとしても,その VPN server は 192.168.Y.0/24 と 192.168.X.0/24 の peer を張ってるんだから対向のアドレスは見えてるはずだし VPS server のホストに static route で 192.168.X.0/24 への routing は その VPN server に接続してきている VPN client のアドレスを 指定すればいいだけに見える
@rinsuki 192.168.Y.0/24 に存在する VPN server のホストが 192.168.Y.5 だとして,VPN の interface として ppp0 が生えているとして,ip route add 192.168.X.0/24 dev ppp0 ってやったら 192.168.X.0 向けの通信は全部 ppp0 に流れる。で,192.168.Y.0/24 に存在する VPN server 以外のホストは ip route add 192.168.X.0/24 via 192.168.Y.5 ってやったら,192.168.Y.0/24 のホストは 192.168.X.0/24 へ通信しようとするときには 192.168.Y.5(VPN server)に通信を向けるので,そのあと VPN server は受けた通信を ppp0 に forward するはずなのでそれで終わり。
@rinsuki ようはつまり VPN serve のホストが ルーターとして振る舞うことになるので,Linux の場合は /etc/sysctl.conf に net.ipv4.ip_forward = 1 とか書いて IPv4 の forwarding を有効化する必要はある。
@rinsuki こういうことしはじめようとするとそもそもリモートアクセス VPN じゃなくて 192.168.Y.0/24 と 192.168.X.0/24 双方に VPN server 置いて拠点間 VPN やるほうが正しい気がしなくもない
@orumin なんかいろいろ不幸になることがあるのでVPNに192.168.X.0/24を出したくないというのを思い出した (ルーターデフォルトなので他の所に行くと被りがちで、元々ある 192.168.X.0/24に繋がるVPNは何回かそれで使えなかったことがある)
@rinsuki なるほどね。それなら DNS server は相手に関係なく 192.168.Y.80 を返してしまって,192.168.X.0/24 に存在してるルーターに 192.168.Y.80 への static route を入れれば解決な気がしてきた
@orumin LAN側静的ルーティング設定なるもので設定したけどTCPは通らないしpingは
$ ping 192.168.Y.80
PING 192.168.Y.80 (192.168.Y.80): 56 data bytes
64 bytes from 192.168.Y.80: icmp_seq=0 ttl=64 time=1.190 ms
92 bytes from ntt.setup (192.168.X.1): Redirect Host(New addr: 192.168.X.80)
になっちゃって になってる
@rinsuki うーん,やっぱだめか。じゃあ VLAN 作って 192.168.Y.0/24 に 192.168.X.80 のホストを 192.168.Y.80 として参加させてしまう,というのが正攻法な気がするけど,ntt.setup というドメイン名見るに普通の HGW だろうから VLAN 扱えるかなあ。
@rinsuki あとその ping の反応見るに 192.168.Y.80 は 192.168.X.80 というアドレスを重複して持ってる?っぽい気がするけど,もし VLAN とかやらずにやろうとすると 192.168.Y.80 のアドレスだけ持たせて 192.168.X.80 は剥がないとダメな気がする。
@rinsuki ようは 192.168.Y.80 は 192.168.Y.0/24 の LAN にしか存在しないことにしてしまって,192.168.X.0/24 のホストが 192.168.Y.80 を問い合わせに行くだけ,という形にするという話。
@rinsuki でもそうすると 192.168.Y.80 の通信が基本的に VPN の向こうに流れて困る,という話があるのなら,ちょっと考えなきゃいけないのだけれども。
@orumin 192.168.X.80がインターネットに出るときは192.168.X.1から出たいし、192.168.Y.80への通信が192.168.X.0/24にいる端末からでもVPN越しになるとVPNサーバーの帯域を無駄遣いしてしまうのであれだなあという気持ちがあります
@rinsuki じゃあ両方に DNS server 建てるとかかなあ。片方は dnsmasq にして,基本的には既に建ってる DNS server から DNS 情報ひっぱって caching するのに徹して,hoge.internal のレコードだけは dnsmasq で上書きするとか。
@rinsuki dnsmasq,/etc/hosts に書いたホスト名→アドレスの対応を自動で A レコード/AAAA レコードとして利用するし,基本的には /etc/resolv.conf に書いた DNS server にクライアントの代わりに聞きに行ってキャッシュするだけだから,難しいことなく使えると思う。
@orumin それって CNAME もちゃんといい感じにやってくれるんですかね (例えば fuga.internal → hoge.internal のCNAMEレコードがあるとして、fuga.internalを引いたときにちゃんと書き換え後のhoge.internalが引けるのか)
@rinsuki ちょっとそれは試したことがないからわからないな(あと DNS の RFC をちゃんと読んでないので,上位の DNS server に CNAME を問合せたあとでどこに A レコードを問合せに行くのかも知らない……。)
@rinsuki 結論から言うと dnsmasq で CNAME 持ってないやつは上位の DNS server に問合せに行ってそのまま上位の DNS server が持つ A レコードをそいつが返してくるみたいだった
@rinsuki なので CNAME についても dnsmasq で全部設定しておかないとダメそう
@orumin えー、それはめんどいな…
@rinsuki DNS server のほうの設定書いたら dnsmasq.conf を自動生成するナニかを作る,とか。
@rinsuki Aレコードと AAAA レコードは /etc/hosts を見るけどそれ以外のレコードは dnsmasq.conf に書くかんじのハズ。cname=fuga.internal, hoge.internal
みたいに。
@rinsuki まあ,試案のひとつとして。