僕の環境はMikroTik CCR(RouterOS)を使っています。
で、
DS-LiteとPPPoE(IP非固定)を同時に使っていて、
かつDefault GatewayをDS-Liteに向けています。
[admin@MikroTik] /ip route print detail 0 A S dst-address=0.0.0.0/0 gateway=ds-lite gateway-status=ds-lite reachable check-gateway=ping distance=1 scope=30 target-scope=10 1 DS dst-address=0.0.0.0/0 gateway=pppoe gateway-status=pppoe reachable distance=2 scope=30 target-scope=10
しかし困ったことに、
この環境下だとCCRをVPNルーターとして使いたい時、
VPNのトラフィックがポート開放ができないDS-Lite経路となってしまい、
うまく接続することができません。
また、このままだとRouterOSの機能「Cloud」もDS-Lite側のアドレスを登録してしまいます。
なので、
「Cloud」への登録IPアドレスはPPPoE側のアドレスを登録し、
Mangleを書いて、PPPoEからのトラフィックはPPPoEへ返すようにしてみます。
1)DDNSサーバ登録への経路
「Cloud」のDDNSサーバは、
https://wiki.mikrotik.com/wiki/Manual:IP/Cloud
「cloud2.mikrotik.com」を使うとあるのでPPPoE側を流れるようにRouteに追加してあげます。
「cloud2.mikrotik.com」のIPアドレスは
2a02:610:7501:4000::251 2a02:610:7501:1000::201 159.148.172.251 159.148.147.201
なので、
Routeに追加してあげます。
PPPoEインターフェイスは「pppoe」としています。
[admin@MikroTik] /ip route print detail 12 A S ;;; DDNScloud2.mikrotik.com dst-address=159.148.147.201/32 gateway=pppoe gateway-status=pppoe reachable distance=1 scope=30 target-scope=10 13 A S ;;; DDNScloud2.mikrotik.com dst-address=159.148.172.251/32 gateway=pppoe gateway-status=pppoe reachable distance=1 scope=30 target-scope=10
これで「Cloud」をアップデートすると、
[admin@MikroTik] /ip cloud force-update ip cloud print ddns-enabled: yes ddns-update-interval: 3m update-time: yes public-address: ***.***.***.*** dns-name: ***.sn.mynetname.net status: updated
うまくPPPoE側のIPアドレスを登録できると思います。
2)Mangleを書く
INとOUTの両方が必要になります。
入ってきたパケットに「PPPOE-IN」マークをつけて、
パケットが出ていくときに「PPPOE-IN」マークをされたものを新たにルーティングするため「PPPOE-OUT」マークを付けます。
[admin@MikroTik] /ip firewall mangle print detail 3 chain=prerouting action=mark-connection new-connection-mark=PPPOE-IN passthrough=yes in-interface=pppoe log=no log-prefix="" 4 chain=output action=mark-routing new-routing-mark=PPPOE-OUT passthrough=yes connection-mark=PPPOE-IN log=no log-prefix="" "
続いて
「PPPOE-OUT」マークされたものをpppoeから出ていけるようにRouteに追加してあげます。
[admin@MikroTik] /ip route print detail 0 A S dst-address=0.0.0.0/0 gateway=pppoe gateway-status=pppoe reachable distance=1 scope=30 target-scope=10 routing-mark=PPPOE-OUT
これで、PPPoEから来たものはPPPoEで返るようになります。