CentOS7で Bridge routerを作ってみる
測定装置を制御するPCが勝手にwindows updateさせないために、とか
古くてネットワークに接続させたくないけど、ファイルサーバにはアクセスさせたい、とか
そんな場合に。
CentOS6ではこちら router/Bridge/CentOS6
方針としては、2つのnicをbridgeで1つにして、それにebtablesで制限をかける。
ごくごく簡単な方法で用意してみた。
nmtuiコマンドを駆使して作ってみた。

作成後確認してみると、
[root@bridge-router ~]# brctl show
bridge name bridge id STP enabled interfaces
nm-bridge 8000.000c29b5ee8c no ens32
ens33
[root@bridge-router ~]#となる。
*STPを無効にするみたい
必要なパッケージをインストールして、モジュールの登録とカーネルパラメーターを調整する。
[root@bridge-router ~]# yum install iptables-services iptables-utils ebtables bridge-utils
[root@bridge-router ~]# systemctl stop firewalld
[root@bridge-router ~]# systemctl disable firewalld
[root@bridge-router ~]# systemctl enable iptables ebtables
[root@bridge-router ~]# systemctl start iptables ebtables
[root@bridge-router ~]# echo br_netfilter > /etc/modules-load.d/br_netfilter.conf
[root@bridge-router ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/ip_forward.confwebページへのアクセスが禁止されるだけで、それ以外のサービスは利用できる
「windows updateを阻止する」なら
(初期設定)
[root@bridge-router ~]# iptables -P INPUT ACCEPT
[root@bridge-router ~]# iptables -P OUTPUT ACCEPT
[root@bridge-router ~]# iptables -P FORWARD ACCEPT
[root@bridge-router ~]# iptables -F
(確認)
[root@bridge-router ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@bridge-router ~]# iptables-save > /etc/sysconfig/iptables
(初期設定)
[root@bridge-router ~]# ebtables -P INPUT ACCEPT
[root@bridge-router ~]# ebtables -P OUTPUT ACCEPT
[root@bridge-router ~]# ebtables -P FORWARD ACCEPT
[root@bridge-router ~]# ebtables -F
[root@bridge-router ~]# ebtables -A FORWARD --proto ipv4 --ip-protocol tcp --ip-destination-port 80 -j DROP
[root@bridge-router ~]# ebtables -A FORWARD --proto ipv4 --ip-protocol tcp --ip-destination-port 443 -j DROP
[root@bridge-router ~]# /usr/libexec/ebtables save上記は特定の通信だけを排除してます。その他はACCEPT
特定の通信のみ許可するなら下記のようにします
ebtables -P INPUT ACCEPT
ebtables -P OUTPUT ACCEPT
ebtables -P FORWARD DROP
(FORWARDを基本DROPとさせます)
ebtables -F
(初期化)
(そして受け入れる通信のみをACCEPTとする)
ebtables -A FORWARD --proto ipv4 --ip-source 192.168.0.0/24 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto ICMP -j ACCEPT
ebtables -A FORWARD --proto arp -j ACCEPT
(ICMP応答を可能に)
ebtables -A FORWARD --proto ipv4 --ip-proto TCP --ip-sport 22 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto TCP --ip-dport 22 -j ACCEPT
(SSH通信を可能に)
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-sport 53 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-dport 53 -j ACCEPT
(DNS問い合わせを可能に)
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-sport 123 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-dport 123 -j ACCEPT
(時計合わせを可能に)
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-sport 137 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-dport 137 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-sport 138 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-dport 138 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto TCP --ip-sport 139 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto TCP --ip-dport 139 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto TCP --ip-sport 445 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto TCP --ip-dport 445 -j ACCEPT
(SMB通信を可能に)
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-dport 67 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-sport 67 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-dport 68 -j ACCEPT
ebtables -A FORWARD --proto ipv4 --ip-proto UDP --ip-sport 68 -j ACCEPT
(DHCP通信を可能に)
/usr/libexec/ebtables save
(設定を保存)