#!/bin/bash # https://www.iij.ad.jp/dev/tech/techweek/pdf/141128_0.pdf を参考にした # ubuntu用 # apt-get install firewalld されている前提 # DS-Liteでつなぐ modprobe ip6_tunnel ip -6 tunnel add ip6tnl1 mode ip4ip6 remote 2404:8e00::feed:100 local dead:beef:feed:100:dead:beef:feed:200 dev eth0 ip link set dev ip6tnl1 up # IP Forwardを有効にする sysctl net.ipv4.ip_forward=1 # ちからわざルーティング # 192.168.0.1はこのトンネル用マシン。含めてルーティングしてしまうとパケットがトンネルに流れてしまい、sshもつながらなくなる。 # ちゃんと設定するなら、priorityを工夫してルーティングしてやるとよいのかもしれない。 for ((ipcount=2; ipcount < 255; ipcount++)); do ip rule add from 192.168.0.$ipcount table 10001 priority 32765 done ip route add table 10001 dev ip6tnl1 ip route add default dev ip6tnl1 metric 10001 ip route flush cache # ファイアウォールをてきとうに設定する firewall-cmd --permanent --zone=internal --add-masquerade firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ip6tnl1 -j MASQUERADE firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i p1p1 -o ip6tnl1 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ip6tnl1 -o p1p1 -m state --state RELATED,ESTABLISHED -j ACCEPT firewall-cmd --reload