https://qiita.com/nishio-dens/items/4bb28574b7d43fd2b3bf
を参考に、iptablesを設定するスクリプトを作成。
systemdに登録して、起動時にキックするように設定。
setup_iptable.sh
#!/bin/bash
#set -x
# Refer : https://qiita.com/kakinaguru_zo/items/2764dd8e83e54a6605f2
BR='スクショのoption peeraddrのアドレスをそのまま書く'
CE='スクショのCEを書く'
IP4='スクショのIPv4アドレスを書く'
PSID='スクショのPSIDを書く'
WAN_DEVICE='`OCUに接続されたネットワークのインターフェース名`
LAN_DEVICE='ローカル・ネットワークのインターフェース名`
LOCAL_SOURCE='fd00::/64' # ローカル・ネットワークのインターフェースのGlobal scope IPv6アドレス
TUNDEV='ip6tnl1' # 新たに作り出すインターフェース名をは好きなように決める
IP4_LOCAL='192.168.X.YY' # ローカル・ネットワークのインターフェースのIPv4アドレス
BK_NUM=63
IP6_MARK='1000'
set_tunnel(){
ip -6 addr add $CE dev $WAN_DEVICE
ip -6 tunnel add $TUNDEV mode ip4ip6 remote $BR local $CE dev $WAN_DEVICE encaplimit none
ip link set dev $TUNDEV mtu 1460
ip link set dev $TUNDEV up
ip -4 route delete default
ip -4 route add default dev $TUNDEV
}
set_iptables_ip4_output(){
iptables -t nat -F
for rule in $( seq 1 ${BK_NUM} ) ; do
mark=$(( $rule + 16 ))
pn=$(( $rule - 1))
portl=$(( $rule * 1024 + $PSID * 16 ))
portr=$(( $portl + 15 ))
iptables -t nat -A PREROUTING -m statistic --mode nth --every $BK_NUM --packet $pn -j MARK --set-mark $mark
iptables -t nat -A OUTPUT -m statistic --mode nth --every $BK_NUM --packet $pn -j MARK --set-mark $mark
iptables -t nat -A POSTROUTING -p icmp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr
iptables -t nat -A POSTROUTING -p tcp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr
iptables -t nat -A POSTROUTING -p udp -o $TUNDEV -m mark --mark $mark -j SNAT --to $IP4:$portl-$portr
done
iptables -t mangle -o $TUNDEV --insert FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu
}
set_iptables_ip6_output(){
ip6tables -F
# すべての通信を素通りだと怖いので MARKをつけてLAN内のものからのみ許可する
ip6tables -t nat -A PREROUTING -i $LAN_DEVICE -j MARK --set-mark $IP6_MARK
ip6tables -t filter -A FORWARD -p tcp -m mark --mark $IP6_MARK -j ACCEPT
ip6tables -t filter -A FORWARD -p udp -m mark --mark $IP6_MARK -j ACCEPT
ip6tables -t filter -A FORWARD -m mark --mark $IP6_MARK -j ACCEPT
# SSHはローカルネットワークからのみ許可
ip6tables -A INPUT -p tcp -s $LOCAL_SOURCE --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j DROP
# fd00::/64 宛の通信は全部WANに流す
ip6tables -t nat -A POSTROUTING -s $LOCAL_SOURCE -o $WAN_DEVICE -j MASQUERADE
}
set_iptables_input(){
iptables -t nat -I PREROUTING -i $TUNDEV -p tcp --dport 1504 -j DNAT --to-destination ${IP4_LOCAL}:22
}
set_tunnel
set_iptables_ip4_output
set_iptables_ip6_output
#set_iptables_input