#!/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
Comments