pipe 發表於 2022-12-10 21:10:14

CentOS8 用雙網卡 PPPOE 撥號並做 NAT

我用nmcli可以成功建立pppoe連線
: (在下列例子中,我將pppoe連線命名為ppp0,刻意設定為需要時才手動進行撥接,
: 網卡的裝置名稱為對外enp1s0f0, 對內enp1s0f1)
安裝模組
dnf install NetworkManager-ppp -y
dnf install ppp -y下載re-pppoe rpm
載點

安裝rpm
rpm -ivh rp-pppoe-3.14-7.el8.lux.x86_64.rpm




# nmcli connection edit type pppoe con-name "ppp0"
: ===| nmcli 互動式連線編輯程式 |===
: 新增一項「pppoe」連線
: 輸入「help」或是「?」以取得可用指令。
: 鍵入“print”以顯示所有連接屬性。
: 輸入「describe [<setting>.<prop>]」以取得詳細的內容描述。
: 您可編輯以下設定:connection, pppoe, 802-3-ethernet (ethernet), ppp, 802-1x,
: ethtool, match, ipv4, ipv6, tc, proxy
nmcli> set connection.autoconnect yes
nmcli> set connection.interface-name ppp0
nmcli> set pppoe.parent enp1s0f0
nmcli> set pppoe.username (您的帳號名稱)
nmcli> set pppoe.password (您的連線密碼)
nmcli> save persistent
: 雖說可以成功撥接連線,但還是開機後有時候撥接會出狀況,還要重開一次
# nmcli connection up ppp0
架設 NAT 需要有兩個網路孔,一個負責 WAN,一個負責 LAN,先修改網卡的 zone 分別為   External (WAN) 跟 Internal (LAN),我的 enp1s0f0 ppp0負責 WAN,enp1s0f1 負責 LAN。

nmcli c mod enp1s0f1 connection.zone internal
nmcli c mod enp1s0f0 connection.zone external
firewall-cmd --zone=external --change-interface=ppp0 --permanent



然後確認一下有沒有成功
firewall-cmd --get-active-zone
WAN 設定 IP masquerad是 IP 偽裝。

firewall-cmd --zone=external --add-masquerade --permanent
firewall-cmd --zone=internal --add-masquerade --permanent
firewall-cmd --reload


檢查一下 ip fordwarding 是否啟用,如果啟用的話結果為 1

cat /proc/sys/net/ipv4/ip_forward

通過 WAN 的 port 22/tcp 轉發到 WAN 本身的port 9487/tcp

firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=9487
firewall-cmd --list-all --zone=external



通過 WAN 的 port 22/tcp 轉發到 192.168.0.31

firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.31
firewall-cmd --list-all --zone=external


允許封包轉送

firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ppp0 -j MASQUERADE
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp1s0f1 -o ppp0 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ppp0 -o enp1s0f1 -m state --state RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --reload

如要刪除規則firewall-cmd --direct --remove-rule如要刪除ZONE內偽裝
firewall-cmd --zone=external --remove-masquerade
這時已經能連線但是還是NAT不能正常
請看這兩篇
用IPTABLES
CentOS 8 如何關閉firewalld 並打開iptables
CENTSOS 8-9 PPPoE 在 iptables 中 TCPMSS 網路封包設定問題



參考文章https://www.ptt.cc/bbs/Linux/M.1638160821.A.F86.html
http://www.tshopping.com.tw/thread-264219-1-2.html
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-8





頁: [1]
查看完整版本: CentOS8 用雙網卡 PPPOE 撥號並做 NAT