linuxルータ構築

Linux ルータ

Rocky Linux 9編

設定初期化

sudo systemctl stop firewalld
sudo rm -rf /etc/firewalld
sudo cp -rp /usr/lib/firewalld /etc/
sudo systemctl start firewalld

eth0が外、eth1が内の場合

firewall-cmd --zone=external --change-interface=eth0 --permanent
firewall-cmd --zone=internal --change-interface=eth1 --permanent
# -- --
firewall-cmd --permanent --new-policy natPolicy
firewall-cmd --permanent --policy natPolicy --set-target ACCEPT
firewall-cmd --permanent --policy natPolicy --add-egress-zone external
firewall-cmd --permanent --policy natPolicy --add-ingress-zone internal
firewall-cmd --reload

port転送 外からの8022ポートを内側の192.168.1.2:22に転送

firewall-cmd --zone=external --add-forward-port=port=8022:proto=tcp:toport=22:toaddr=192.168.1.2

CentOS7編(old)

CentOS7をインストールし、1つのNICに192.168.251.204 (enp3s0)、もう一つのNICにOCNから割り当てられた動的なIP (ppp0)が設定されている。

firewall-cmd --get-active-zone
firewall-cmd --zone=external --change-interface=ppp0 --permanent
firewall-cmd --zone=trusted --change-interface=enp3s0 --permanent
firewall-cmd --zone=external --add-forward-port=port=8352:proto=tcp:toport=3389:toaddr=192.168.251.152
4 --permanent
firewall-cmd --zone=trusted --add-masquerade --permanent
firewall-cmd --reload
firewall-cmd --get-active-zone
firewall-cmd --list-all --zone=trusted 
firewall-cmd --list-all --zone=external 

firewalldで制御せず、単にポートを転送するだけなら

firewall-cmd --list-all --zone=public
firewall-cmd --zone=public --add-port=2222/tcp --permanent
firewall-cmd --reload
socat tcp-listen:2222,fork tcp-connect:192.168.251.167:3389

firewalldでポート開けるには

firewall-cmd --zone=public --add-port=1187/tcp --permanent  
firewall-cmd --zone=public --add-port=10050/tcp --permanent   #zabbix用
firewall-cmd --permanent --add-service=nfs --zone=internal  #nfs
firewall-cmd --permanent --add-service=mountd --zone=internal  #nfs
firewall-cmd --permanent --add-service=rpc-bind --zone=internal  #nfs
firewall-cmd --reload

PPPoEだと速度が出ないので、普通に192.168.251.xxxとNTT光のLANの間をルーティング

enp3s0がinternalで、enp0s25がpublic(NTT側)

firewall-cmd --permanent --zone=internal --change-interface=enp3s0
firewall-cmd --permanent --zone=internal --add-masquerade
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o enp0s25 -j MASQUERADE
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp3s0 -o enp0s25 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s25 -o enp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --reload
firewall-cmd --direct --get-all-rules #ルールの確認
firewall-cmd --direct --get-all-rules --permanent #permanentルールの確認

ポート転送をする場合

firewall-cmd --zone=public --add-forward-port=port=1187:proto=tcp:toport=3389:toaddr=192.168.251.150 --permanent
firewall-cmd --zone=public --add-forward-port=port=1186:proto=tcp:toport=3389:toaddr=192.168.251.214 --permanent

ポート転送をやめる場合

firewall-cmd --zone=public --remove-forward-port=port=1186:proto=tcp:toport=3389:toaddr=192.168.251.214 --permanent
sudo nmtui

で2つのNICを設定。デフォルトゲートウェイにしないほうに、「デフォルトゲートウェイにしない」にチェックを入れておく。それ以外は同じ設定をして

sudo systemctl restart network

でネットワーク接続を変更。routeコマンドで変更を確認。

sudo nano /etc/sysctl.conf

で、ファイルの最後に

net.ipv4.ip_forward=1

を追加してOSを再起動。

cat /proc/sys/net/ipv4/ip_forward

で1と表示されるか確認。(変更前は0) でも、この手順では他のPCからルーターとして使用するのはダメだったので、oldの手順で行う必要がありそう。

sudo su -
ufw allow in from 192.168.0.0/16
ufw enable

nano /etc/default/ufw
#下記に変更
DEFAULT_FORWARD_POLICY="ACCEPT"
 #DROP

nano /etc/sysctl.conf
#コメント解除
net.ipv4.ip_forward=1

sysctl -p
ufw reload

ufw status verbose
nano /etc/ufw/before.rules
# 最終行のCOMMIT前に追記
# NTT側 enp14s0 192.168.11.101/24
# ラボ側 enp9s0 192.168.200.101/20

# NAT
*nat
-F
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.192.0/20 -o enp14s0 -j MASQUERADE

COMMIT

Ubuntu 20での話。 ufwを有効にした後

sudo ufw allow in from 192.168.0.0/16

で研究室内からのみアクセスを受け入れる。

ルーター化するには

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

/etc/ufw/sysctl.conf

net.ipv4.ip_forward=1

/etc/ufw/before.rules

# *filterの前あたりに下記を追加

*nat
#-Fがあるとufw reloadしたときに古い設定をリセットしてくれる
-F
:POSTROUTING ACCEPT [0:0]

# Forward traffic from eth0 through eth1.
-A POSTROUTING -s 192.168.253.0/24 -o enp5s0 -j MASQUERADE #enp5s0がグローバル側
-A PREROUTING -i enp5s0 -p tcp -d 133.11.144.11 --dport 80 -j DNAT --to-destination 192.168.253.163:80
-A PREROUTING -i enp5s0 -p tcp -d 133.11.144.11 --dport 443 -j DNAT --to-destination 192.168.253.163:443

COMMIT
sudo ufw disable && sudo ufw enable
#before.rulesを書き換えたならば
sudo systemctl restart ufw.service

#転送ルール確認
sudo iptables -t nat -nL
sudo ufw status
sudo ufw allow 80
sudo ufw allow 443
sudo nmtui

下記の箇所を変更

│ 送信先/プレフィックス  次のホップ             メトリック        │      │
│ 192.168.0.0/16_______  192.168.253.1________  100_______ <削除> │      │
│ <追加...>                                                       │      │
│                                                                 │      │
│                                                 <取り消し> <OK> │      │
[X] このネットワークはデフォルトのルートには使用しない                      │
[X] 自動的に取得されたルートを無視                        
apt install squid apache2-utils

/etc/squid/squid.confを編集して、##auth_param basic program...が書かれているあたりに下記を追加。

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/.htpasswd
auth_param basic children 50
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 1000 hours
acl password proxy_auth REQUIRED
http_access allow password
htpasswd -c /etc/squid/.htpasswd suikou

でパスワードを作成。

systemctl restart squid
ufw allow 3128

クライアントは次のような感じで設定する。

r251やr311からzabbix_agent-3.0.32-linux-3.0-amd64-static.tar.gzを転送して、/usr/local/以下に解凍する。

cd /usr/local
tar vxf zabbix_agent-3.0.32-linux-3.0-amd64-static.tar.gz
mv conf/* etc/
rmdir conf

sudo nano /usr/lib/systemd/system/zabbix-agent.service      
#下記のファイルを作る
[Unit]
Description=Zabbix Agent
#After=syslog.target
After=network.target

[Service]
#Environment="CONFFILE=/usr/local/etc/zabbix_agentd.conf"
#EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
#Restart=on-failure
#PIDFile=/run/zabbix/zabbix_agentd.pid
#KillMode=control-group
#ExecStart=/usr/local/bin/zabbix_agentd -c $CONFFILE
ExecStart=/usr/local/sbin/zabbix_agentd
#ExecStart=/home/yoshitake/run-zabbix.sh
User=yoshitake
Group=yoshitake
#ExecStop=/bin/kill -SIGTERM $MAINPID
#RestartSec=10s

[Install]
WantedBy=multi-user.target

#####
sudo systemctl start zabbix-agent.service        
sudo systemctl enable zabbix-agent.service                      

まずは、firefoxでhttp://192.168.11.1を開いて、admin:31500193でログインし、ポート転送設定を追加する。

sudo nano /etc/ufw/before.rules

で下記を追加する。

-A PREROUTING -i enp10s0 -p tcp --dport 2208 -j DNAT --to-destination 192.168.251.140:22

その後、

sudo ufw reload

r311を入れ替えた際、アダプタの名前が変わってenp10s0→eno2になった。 そのため、r311をデフォルトゲートウェイにしているm50v311n1などが外に通信できなくなった。

r311にログインして、

sudo nmtui
#IP: 192.168.11.101/24, GW: 192.168.11.1

sudo nano /etc/ufw/before.rules
#-A POSTROUTING -s 192.168.251.0/24 -o eno2 -j MASQUERADE

sudo ufw disable && sudo ufw enable
#これで繋がるようになったけど、nmtuiの結果が反映されていないので、たぶん再起動しておいたほうが本当は良さそう。
  • linuxルータ構築.1689260538.txt.gz
  • 最終更新: 2023/07/13 15:02
  • by suikou